我的 DLL 项目中有这样的文件结构:
// common_header.h //////////////////
extern int CommonVar = 0;
extern bool CommonVar2 = false;
EXPORT_API void ThisFunction();
EXPORT_API bool ThisOtherFunction();
// library_part1.cpp ////////////////
#include "common_header.h"
EXPORT_API void ThisFunction() {
if (CommonVar2) CommonVar++;
}
// library_part2.cpp ////////////////
#include "common_header.h"
EXPORT_API bool ThisOtherFunction() {
if (CommonVar>2) return true;
return false;
}
正如我所说,我使用 Microsoft Visual Studio 将其构建到一个 DLL 中,当然,我得到了与这些变量在目标文件中出现两次的事实相关的链接错误。这是因为它为每个 .cpp 创建了一个 .obj,并且每个 .cpp 如何包含相同的标头,它还导出变量。你懂了。现在,我想知道是否有解决方案,这样我就可以为 .CPP 和 extern 保留这两个变量(我的意思是,至少能够从使用 DLL 的应用程序中读取它们)?当然,它们只能在 .obj 文件中声明一次。也许有一些预编译器命令(比如#pragma once
标题)