围绕静态库托管C ++包装器

时间:2012-02-08 10:37:47

标签: c++ .net c++-cli wrapper

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

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

  

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

“Unmanaged”是我的项目中的,但它不是项目的名称。

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

我可以在托管类库项目中拥有一个非托管类(仅由托管类使用)吗?我这么认为,但如果我错了,那么我将有时间知道我想要做的事情是行不通的。

1 个答案:

答案 0 :(得分:1)

我刚开始第一次编写托管代码,并且已经花了很长时间搞清楚如何使用我的非托管类库。但我想出了一种方法。是的,您可以在同一个库中拥有托管和非托管类。在我的情况下,一个复杂的问题是我的非托管代码只能在VS2008中编译,而我需要将托管代码放入其中,只能编译VS2010。所以这就是我所做的:

  1. 像往常一样将我的非托管代码构建到使用VS2008的静态库中。这会产生MyUnmanagedClasses.lib

  2. 在VS 2010中,右键单击(托管)项目中我想使用非托管代码的/属性

  3. 选择链接器/输入

  4. 在第一个框“Additional Dependencies”中,添加MyUnmanagedClasses.lib

  5. 选择链接器/常规

  6. 在“其他库目录”框中,添加MyUnmanagedClasses.lib所在的目录

  7. 像往常一样使用非托管课程!

  8. 注意:不要将非托管项目本身添加到您的解决方案中 - 这是我先尝试过的,但它不起作用;如上所述,只需链接到库中。