我正在尝试混合使用本机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库的共享版本是必需的,如果您忘记选择它,它将发出抱怨。

09-27 00:00