我有一个库函数,我试图链接但是编译器通过在函数名称后附加“( imp _)”前缀来引发链接器错误。
我不明白为什么编译器使用“ imp _”作为函数名称的前缀,我不明白底层的链接器问题。
答案 0 :(得分:0)
似乎是静态与动态链接问题。
编译器会将函数引用为 impl _ + funcname,如果它认为实际函数将放在 dynamic 库中。即实际的foobar实现在dll中,而 impl _foobar是一种使链接器开心的存根(foobar的地址在链接阶段是未知的,只有在应用程序在运行时加载dll时才会知道)。 / p>
因此,请验证您应该如何链接到该库(通常libs同时包含静态和动态变体)并根据它链接到它。