C++ DLL链接UnResolved Externals

Und*_*ned 4 c++ dllexport

我有一个相当大的Core项目,我正在使用,我试图使它适应我使用的DLL引擎,我得到一堆错误,如:

未解析的外部符号"private:static class

当在DLL中包含Core中的一些头文件时,该类通过__declspec(dllexport)导出,但任何带有静态成员的头文件都会抛出有关静态成员的大量错误.

这是一个相当大的项目,我不能完全绕过去除我看到的每个静态类成员,无论如何围绕这种事情?

正在导入的类的基本示例:

class __declspec(dllexport) MyClass
{
    public:
        static bool m_someVar;
}
Run Code Online (Sandbox Code Playgroud)

为了清楚起见,我只想解决m_someVar在类实现文件中的定义/声明(忘记术语)

Mos*_*Bin 7

编译时Core你想要这些函数dllexport; 但是,当您编译DLL时,您希望它们是dllimport.在你的情况下,你总是将它们定义为dllexport,因此当你链接DLL它抱怨你已经声明了一个函数(甚至说你要导出它)而没有定义它.

解决方案很简单.而不是手动__declspec,根据您是CoreDLL还是DLL 创建宏:

#ifndef I_AM_A_DLL
#define EXPORT __declspec(dllexport)
#define IMPORT __declspec(dllimport)
#else
#define EXPORT __declspec(dllimport)
#define IMPORT __declspec(dllexport)
#endif
Run Code Online (Sandbox Code Playgroud)

使用EXPORT中的功能CoreIMPORT对外部DLL函数:

class EXPORT MyClass
{
    public:
        static bool m_someVar;
}
Run Code Online (Sandbox Code Playgroud)