我创建了共享库:
lib.h:
int fun( int a, int b);
Run Code Online (Sandbox Code Playgroud)
lib.cpp:
#include <lib.h>
int fun ( int a, int b)
{
return a+b;
}
Run Code Online (Sandbox Code Playgroud)
编译它:
gcc -fPIC -c lib.cpp
gcc -shared -o -I ./header lib.so lib.o
我的lib.h位于./header中.因此,汇编已经成功.之后我改变了lib.cpp:
#include <lib.h>
int fun ( int a)
{
return a;
}
Run Code Online (Sandbox Code Playgroud)
但什么也没发生.我想看到错误消息或警告.为什么?
在C++中,定义具有相同名称但不同参数的第二个函数是合法的.在C中,编译库时会出错,但在C++中则不然.
现在使用任何一种语言,任何使用您的库的人都会得到一个未定义的符号错误.标头中列出的功能未在任何地方定义.