问题描述
ld.exe: DWARF error: Could not find variable specification at offset 101cee
此错误的一般含义是什么?
在编译发行版时不会发生这种情况。仅调试版本。
解决方法
基本上,我刚刚找到了解决方案。我将其放在这里,因为我在StackOverflow中没有发现这样的问题。如果我的某些职位有误,请回答。
我将一个库编译为静态库,但是没有正确的#define
指令,所有导出的函数都得到一个__declspec(dllexport)
前缀。因此,函数function
的名称变为__imp_function
。
所以,它只是一个undefined reference to __imp_function
。
但是为什么要如此加密呢?为什么释放版本编译正确?
我相信发生这种情况是由于-flto
选项可以链接时间优化,并且将库的所有代码保留在.a文件中,因此,不需要引用(不会失败)。