
我在一个.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 onceref class lib{public: lib(voID);};//lib.cpp#include "lib.h"lib::lib(voID){} 002)lib ::.ctor
这是确切的代码:
lib Project(编译为.dll项目)
//lib.h#pragma onceref class lib{public: lib(voID);};//lib.cpp#include "lib.h"lib::lib(voID){} libTest项目(编译为application.exe)
// libTest.h#pragma onceref 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未解析的令牌所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)