我正在使用Visual Studio,.Net和Windows。
我正在编写一个静态库的包装器。我需要帮助的问题是错误消息:
LINK:致命错误LNK1104:无法打开文件'Unmanaged.lib'
“Unmanaged”是我的项目中的类,但它不是项目的名称。
我创建了一个C ++ CLR类库项目。在其中我创建了一个托管类和一个非托管类。非托管类调用静态库。托管类使用非托管类。编译器和链接器似乎试图为非托管类创建一个库,但这不应该发生。
我可以在托管类库项目中拥有一个非托管类(仅由托管类使用)吗?我这么认为,但如果我错了,那么我将有时间知道我想要做的事情是行不通的。
答案 0 :(得分:1)
我刚开始第一次编写托管代码,并且已经花了很长时间搞清楚如何使用我的非托管类库。但我想出了一种方法。是的,您可以在同一个库中拥有托管和非托管类。在我的情况下,一个复杂的问题是我的非托管代码只能在VS2008中编译,而我需要将托管代码放入其中,只能编译VS2010。所以这就是我所做的:
像往常一样将我的非托管代码构建到使用VS2008的静态库中。这会产生MyUnmanagedClasses.lib
在VS 2010中,右键单击(托管)项目中我想使用非托管代码的/属性
选择链接器/输入
在第一个框“Additional Dependencies”中,添加MyUnmanagedClasses.lib
选择链接器/常规
在“其他库目录”框中,添加MyUnmanagedClasses.lib所在的目录
像往常一样使用非托管课程!
注意:不要将非托管项目本身添加到您的解决方案中 - 这是我先尝试过的,但它不起作用;如上所述,只需链接到库中。