我是托管 C++ 的新手。
我在单个 .sln 中有两个托管 C++ 项目,Project Lib 和 Project LibTest。LibTest 使用 Lib。
Lib 编译和链接很好。该项目设置为 .dll。
LibTest 也被编译为 .dll,但是当它进入链接时,我在所有 Lib::methods 上得到“未解析的令牌”。这些方法定义在 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: 未解析的令牌 (06000002) Lib::.ctor
这是确切的代码:
Lib 项目(编译为 .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;
}