我看到了像这样的Qt源代码:
class Q_CORE_EXPORT QBasicAtomicInt
{
public:
...
};
Run Code Online (Sandbox Code Playgroud)
哪个Q_CORE_EXPORT宏定义如下:
define Q_DECL_IMPORT __declspec(dllimport)
Run Code Online (Sandbox Code Playgroud)
那__declspec(dllimport)真正意味着什么?
http://msdn.microsoft.com/en-us/library/9h658af8.aspx
MSDN说我可以从库中导出函数__declspec(dllexport)但是如何在我的可执行文件中加载这个库?
我在DLL中有一个导出的函数:
__declspec(dllexport) void myfunc(){}
Run Code Online (Sandbox Code Playgroud)
现在我想在我的可执行文件中使用它:
__declspec(dllimport) void myfunc(void);
Run Code Online (Sandbox Code Playgroud)
但是我的程序将如何知道在哪里找到这个功能?
只需编译目标时,CMake会自动将以下编译定义添加到所有源代码文件中:
-Dlibname_EXPORTS
Run Code Online (Sandbox Code Playgroud)
为什么要这样做,如何禁用它?
嗨,我对 dllexport 有点困惑。例如,当我在课堂上使用 __declspec( dllexport ) 时
#define DllExport __declspec( dllexport )
class DllExport C {
int i;
virtual int func( void ) { return 1; }
};
Run Code Online (Sandbox Code Playgroud)
是将 C 类导出到 dll 文件还是从 dll 文件中导出 C 类?