我使用的是 64 位 CentOS 版本的 Linux。我正在尝试在我的 C 和 C++ 程序中创建和使用静态库 (libUtility.a)。我可以用 C 编译库,并用 ar 生成 libUtility.a 文件。然后我尝试将它链接到我的程序中。当我使用 C 编译器时一切正常
cc myprog.c -o myprog -I/usr/local/include -L/LocationOfMyLib -lUtility
但是,当我使用 g++ 编译器时,我会收到错误消息。
g++ myprog.c -o myprog -I/usr/local/include -L/LocationOfMyLib -lUtility
myprog.c: In function 'int main(int, char**)':
/tmp/cckIN1Yk.o: In function `main':
myprog.c:(.text+0x41): undefined reference to `Utility_HiWorld(char*)'
collect2: ld returned 1 exit status
我在 C 和 C++ 方面有中等经验,但没有创建自己的库的经验。这个库只有一个名为 Utility_HiWorld() 的子程序。而 myprog.c 只调用那一个子例程。我在这里做错了什么?
新:好的,我绝对没有使用'extern "C"'。我什至不知道那是什么。那解决了它。