dll导出头
extern "C"
void _declspec(dllexport) __stdcall foo();
.def 文件
EXPORTS
foo @1
当我通过 64 位构建配置构建 dll 时,我遇到了这个警告。
警告 LNK4197:多次指定导出“foo”;使用第一个规范
但如果我通过 32 位构建配置构建 dll,则永远不会出现警告。
问题是什么?有什么区别。
在接口的dll头中,我们通常使用这种技术,
#ifdef EXPORT_DLL
#define BASICAPI _declspec(dllexport)
#else
#define BASICAPI _declspec(dllimport)
#endif //_EXPORT_DLL
但是如果def文件也存在,我们在构建64位dll时总是会遇到警告。
那么,我们应该这样写代码吗?
#ifdef EXPORT_DLL
#define BASICAPI
#else
#define BASICAPI _declspec(dllimport)
#endif //_EXPORT_DLL
它运作良好。但这对我来说并不熟悉。
给我你的任何意见。