c/c++语言开发共享为什么总是说“未定义参考”?

(我在Windows上。)

我正在使用C程序测试我编译的DLL( libsox ),它看起来像这样:

#include  #include "sox.h" int main(void) { char const * versionText = sox_version(); printf(versionText); return 0; } 

DLL中定义的函数在sox.h有以下原型(其中包含cdecl ):

 LSX_RETURN_VALID_Z LSX_RETURN_PURE char const * LSX_API sox_version(void); 

这是问题所在:当我尝试使用gcc -lsox -o test.exe test.c构建文件时,出现以下错误:

 C:DOKUME~1ADMINI~1LOKALE~1TempccSS2h2z.o:test.c:(.text+0xf): undefined reference to `sox_version' collect2: ld returned 1 exit status 

一句话给-lsox :我在MinGW的lib文件夹中有库文件“libsox.dll.a”。 如果我写-lsoxnonsense ,那么它说没有库。 这意味着在所示的情况下,它找到了库。 那么为什么不想创建链接呢?

     gcc -lsox -o test.exe test.c 

    您必须先放置源文件:

     gcc test.c -lsox -o test.exe 

    这是因为链接器按顺序遍历输入文件,查找未定义的引用并满足它之前看到的引用。 所以在你的命令行中,它读取libsox.a (或类似的东西),找到未定义的引用(没有)。 然后,它转到你的test.c ,在那里找到未定义的引用,但没有更多的库来满足它们。

    有关详细信息,请参阅此答案。

      以上就是c/c++开发分享为什么总是说“未定义参考”?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/519741.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐