我正在使用Visual Studio,.Net和Windows。

我正在为静态库编写包装器。我需要帮助的问题是错误消息:


  链接:致命错误LNK1104:无法打开文件'Unmanaged.lib'


“非托管”是我的项目中的一个类,但不是项目的名称。

我创建了一个C ++ CLR类库项目。在其中,我创建了一个托管类和一个非托管类。非托管类将调用静态库。托管类使用非托管类。编译器和链接器似乎正在尝试为非托管类创建一个库,但这不是应该发生的事情。

我可以在托管类库项目中有一个非托管类(仅由托管类使用)吗?我以为是这样,但是如果我错了,那么它将节省我知道我尝试做的事情的时间。

最佳答案

我刚刚开始第一次编写托管代码,并且花了很长时间弄清楚如何使用我的非托管类库。但是我想出了一种方法。是的,您可以在同一库中拥有托管类和非托管类。我遇到的一个麻烦是,我的非托管代码仅在VS2008中编译,而我需要放入的托管代码仅在VS2010中编译。所以这就是我所做的:


使用VS2008将我的非托管代码像往常一样构建到静态库中。这将产生MyUnmanagedClasses.lib
在VS 2010中,在要使用非托管代码的(托管)项目上单击鼠标右键/属性
选择链接器/输入
在第一个框“其他依赖项”中,添加MyUnmanagedClasses.lib
选择链接器/常规
在“其他库目录”框中,添加MyUnmanagedClasses.lib所在的目录
像往常一样使用非托管类!


注意:请勿将非托管项目本身添加到您的解决方案中-那是我首先尝试的方法,但是没有用;只需如上所述链接到库中即可。

关于c++ - 静态库周围的托管C++包装器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9191664/

10-11 22:38
查看更多