链接期间未找到符号
问题描述:
我遇到了共享库(Linux)和与此库链接但未找到符号的程序的问题 - 虽然它们在那里。这就是我的:链接期间未找到符号
位于/ usr/lib中的共享库“libetest.so”。当我做一个
readelf -Ws /usr/lib/libetest.so.0
它给了(一些人旁)的输出:
54: 000052c0 905 FUNC LOCAL DEFAULT 11 ETEST_open_connection
现在我有一个应用程序,使得使用ETEST_open_connection的()。当我与
gcc lib_test.cpp -DENV_LINUX -letest
打造它,它失败,出现链接错误
lib_test.cpp:(.text+0x32): undefined reference to `ETEST_open_connection'
如图所示之前的符号是存在的!任何想法为什么这会失败?
答
请尝试:
gcc -DENV_LINUX -letest lib_test.cpp
这应该是正确的参数顺序。
对不起,这没有什么区别。也使用++(因为它是一个.cpp文件)并不能解决这个问题... – Elmi 2015-04-02 19:38:27
哦,好吧;)那么你必须使用g ++。这里的问题是C++为这个函数使用了一个不同的名字。你必须用extern“C”声明它,以便链接器使用这个函数的C名称 – MatzZze 2015-04-02 19:42:12
在头文件中它已经被声明为extern“C”: -/ – Elmi 2015-04-02 19:43:49