ld.exe:DWARF错误:在偏移量101cee处找不到变量规范

问题描述

我得到大量输出,并显示以下消息(仅按十六进制地址区分):

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文件中,因此,不需要引用(不会失败)。