原生C ++ CLI未解析符号
我们有一个优秀的MFC / C ++项目,可处理传入和传出数据库的数据。 所有类都与AFX_EXT_CLASS(如果我不误解它,这是dllexport)导出。 我目前正在编写一个包装器,以便我们可以在C#应用程序中使用它。 这是我第一次真正的包装,所以请忍受我。
这就是我所做的:
如果我正确理解这一点,那么.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库