我正在尝试混合使用本机C ++(使用MFC)静态库和C ++ / CLI WinForms应用程序。当我尝试包含NativeClass.h时,编译C ++ / CLI应用程序失败,因为它不理解用于导出lib类的AFX_EXT_CLASS
。
为了使其正常工作,我能够构建本机库,然后从标头中删除AFX_EXT_CLASS
,然后构建链接到本机库的C ++ / CLI。 C ++ / CLI应用程序将运行,出现对话框并从我的NativeClass :: NativeFunction()方法输出一些虚拟值。一切似乎都很好,除非我必须删除AFX_EXT_CLASS
才能构建C ++ / CLI应用程序。有任何想法如何使这项工作有效而无需编辑标题吗?我希望一步构建。
// NativeClass.h
class AFX_EXT_CLASS NativeClass {
public:
NativeClass();
~NativeClass();
int NativeFunction();
};
这是在标题中使用
AFX_EXT_CLASS
时构建C ++ / CLI应用程序时遇到的错误:NativeClass.h(3): error C2470: 'NativeClass' : looks like a function definition, but there is no parameter list; skipping apparent body
最佳答案
您没有从编译器获得很好的诊断信息,简单的问题是它不知道AFX_EXT_CLASS的含义。不要关闭它,宏会扩展为__declspec(dllimport)。只需通过#include <afx.h>
解决您的问题。 MFC库的共享版本是必需的,如果您忘记选择它,它将发出抱怨。