C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了managed-c – 托管C未解析的令牌大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_1@我是托管C的新手.

我在一个.sln,Project Lib和Project LibTest中有两个托管C项目. LibTest使用Lib.

Lib编译和链接很好.该项目设置为.dll.

LibTest也编译为.dll,但是当它进入链接时,我在所有Lib ::方法上得到“未解析的标记”.这些方法定义在Lib .cpp文件中定义.

如果我将定义移动到Lib.h文件中,一切正常.

我已经修改了LibTest的Reference以依赖Lib项目.

我错过了什么?

编辑:好的,这正是我所拥有的,它仍然无法正常工作.

首先,我使用的是Visual studio 2008 SP1.

其次,当我在C#中进行类似的练习时,它运行良好.

我创建了一个空C CLR项目.我添加一个Lib项目.我添加一个托管类. VSTD生成了Lib.h和Lib.cpp.构造函数自动生成的.

然后我在我的解决方案中添加了另一个项我称之为LibTest.我添加了另一个名为LibTest的托管类.生成LibTest.h和LibTest.cpp.我试图在LibTest构造函数中实例化Lib,但在链接期间它只是说:

1> LibTest.obj:错误LNK2020:未解析的令牌(

//Lib.h
#pragma once

ref class Lib
{
public:
  Lib(void);
};


//Lib.cpp
#include "Lib.h"

Lib::Lib(void)
{
}

002)Lib ::.ctor

这是确切的代码

Lib Project(编译为.dll项目)

//Lib.h
#pragma once

ref class Lib
{
public:
  Lib(void);
};


//Lib.cpp
#include "Lib.h"

Lib::Lib(void)
{
}

LibTest项目(编译为application.exE)

// LibTest.h
#pragma once

ref class LibTest
{
public:
  LibTest(void);
};

// LibTest.cpp
#include "LibTest.h"
#include "Lib.h"

LibTest::LibTest(void)
{
  Lib^ lib = gcnew Lib;
}

int main()
{
  return 0;
}

解决方法

Managed C就像C#一样,关于不同程序集中的类型.这意味着您需要将Lib类声明为public:
public ref class Lib

并且您不应该在LibTest项目中包含Lib.h.当您添加对Lib项目的引用时,编译器将能够解析在那里找到的任何符号.

您当前的代码包含Lib.h,因此链接器在LibTest程序集中搜索Lib类并在那里查找构造函数.

大佬总结

以上是大佬教程为你收集整理的managed-c – 托管C未解析的令牌全部内容,希望文章能够帮你解决managed-c – 托管C未解析的令牌所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。