原生C ++ CLI未解析符号

我们有一个优秀的MFC / C ++项目,可处理传入和传出数据库的数据。 所有类都与AFX_EXT_CLASS(如果我不误解它,这是dllexport)导出。 我目前正在编写一个包装器,以便我们可以在C#应用程序中使用它。 这是我第一次真正的包装,所以请忍受我。

这就是我所做的:

  • 用/ Yc / Gm- / Clr编译项目。 它会生成一个.lib和一个.dll。
  • 我有权访问源代码,因此我在C ++ / Cli项目中添加了头文件的路径。 因此它承认类型。
  • 我将.lib添加到C ++ / Cli项目中的链接器输入中。
  • 我在C ++ / Cli项目中添加了.dll作为参考。
  • 在C ++ / Cli项目中,我有一个stdafx.h,看起来像本地项目中的stdafx.h。
  • 如果我正确理解这一点,那么.lib就是实现,.dll是能够将它引用为.net-dll的“包装器”,而头文件是类定义。

    现在,我可以在C ++ / Cli项目中定义本地对象,但是当我访问其中的函数并尝试构建它时,它会在我试图定义的对象上抛出外部引用未找到的错误。

    这是可以理解的,因为它不知道头文件指向.lib中的实现。 头文件按原样使用。

    我究竟做错了什么? 我应该指向头文件吗? 它不应该使用.dll来查找在.lib文件中实现的类定义吗? 我应该创建一个.def文件来指向这个库吗?

    这个谜题似乎有一个缺失的部分,我期望现在任何时候都能体验到一个骇人听闻的时刻......

    请注意,这不是一个普通的连接问题,它具体是关于AFX_EXT_CLASS导出类MFC和C ++ / CLI的实际使用。

    欢呼声,谢谢你


    你不需要你的第四步。另外,在你的项目中不要使用像stdafx.h这样的预编译头文件,去C / C ++ - >预编译头文件 - >不使用预编译头文件和检查链接器 - >其他依赖项 - > 继承父项或项目的默认值 。 最后,检查错误消息链接是否指向Windows库缺少尝试使用#pragma comment (lib, "yourlib.lib")包含.lib

    链接地址: http://www.djcxy.com/p/59621.html

    上一篇: Native to C++ CLI unresolved symboles

    下一篇: (CLR) C++/CLI include header in form file?