我有下一个文件 common / const.h :
#ifndef COMMON_CONST_H
#define COMMON_CONST_H
#if defined _WIN32 || defined _WIN64
#ifdef PCOM_EXPORTS
#define PCOM_WINAPI __declspec(dllexport)
#else
#define PCOM_WINAPI __declspec(dllimport)
#endif // PCOM_EXPORTS
#endif // _WIN32
namespace common {
extern PCOM_WINAPI const char DIR_SEPARATOR;
}
#endif /* COMMON_CONST_H */
和 common / const.cpp :
#include "common/const.h"
namespace common {
#if defined _WIN32 || defined _WIN64
const char DIR_SEPARATOR = '\\';
#else
const char DIR_SEPARATOR = '/';
#endif
}
我生成其DLL文件没有问题。但是,当我想从另一个库中使用此 DIR_SEPARATOR 变量时,我得到:
Util.obj:错误LNK2001:未解析的外部符号“ char const” common :: DIR_SEPARATOR“:致命错误LNK1120:1个未解决的外部因素
Util.cpp(dll客户端)代码为:
#include "common/const.h"
...
namespace db {
...
shared_ptr<iptree> Util::loadIniFile(const string& filePath) {
string file = filePath;
replace(file.begin(), file.end(), '/', prompt::common::DIR_SEPARATOR);
shared_ptr<iptree> tree(new iptree);
...
}
}
我的问题是:
namespace common { extern PCOM_WINAPI const char DIR_SEPARATOR; }
)?我只想设置一次 DIR_SEPARATOR 值。这种情况可能吗?我想念什么吗?
谢谢。