- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 DLL 和一个主可执行文件,主可执行文件不再链接到 DLL 导入库的符号中,DLL .map 文件中的 declspec 不匹配,被破坏的 C++ 名称也不匹配匹配。我不明白为什么,虽然我已经完成了当您无法链接 C++ 内容时您通常会做的事情。
我的标题定义如下:
#ifdef MY_MODULE
#undef CLASS_EXPORT
#define CLASS_EXPORT __declspec(dllexport)
#else
#undef CLASS_EXPORT
#define CLASS_EXPORT __declspec(dllimport)
#endif
我的类似乎可以正确导出,但是 .map 文件指示一些奇怪的东西,我认为是错误的:
6 ?CreateDataArea@@YAKPAGPBD111PAVCObject@@K@Z (unsigned long __cdecl
CreateDataArea(unsigned short *,char const *,char const *,char const *,
char const *,class CObject *,unsigned long))
上面的错位名称有 @@YAK...
链接错误是:
1>Device.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: unsigned long __thiscall
CCommonMemory::CreateDataArea(unsigned short *,char const *,char const *,
char const *,char const *,class CObject *,unsigned long)"
(__imp_?CreateDataArea@CCommonMemory@@QAEKPAGPBD111PAVCObject@@K@Z) referenced
in function "public: __thiscall CDevice::CDevice(void)" (??0CDevice@@QAE@XZ)
那么,为什么当我配置了 declspec 宏时,错位名称 @@QAEK
不同,为什么 .map 文件显示 __thiscall
调用约定,当宏定义 __declspec(dllexport)
?
这就像我忘记执行 __declspec(dllimport/dllexport) 宏一样,但我还是做到了。
我尝试将 CLASS_EXPORT 放在导出的每个方法上,我在类声明的第一行尝试了它,没有任何变化。
最佳答案
看起来 CreateDataArea()
的定义没有限定在类的范围内(即,您在定义函数)。
如果您查看映射文件中的内容,您会发现它是一个没有类名“attached”的 __cdecl
函数。
关于c++ - 链接时 Visual C++ 2008 应用程序中出现名称重整 declspec 不匹配的链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15328987/
简短的例子: #include #include using namespace boost; template BOOST_TYPEOF_TPL(T() + U()) add2(const T&
考虑以下代码: #include template Result f(Function func, Types... values) { return std::get(std::make
我是一名优秀的程序员,十分优秀!