我创建了共享库:
lib.h:
int fun( int a, int b);
lib.cpp:
#include <lib.h>
int fun ( int a, int b)
{
return a+b;
}
编译:
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;
}
但什么也没发生。我想看到错误消息或警告。为什么?
答案 0 :(得分:7)
在C ++中,定义具有相同名称但参数不同的第二个函数是合法的。在C中,编译库时会出错,但在C ++中则不会。
现在使用任何一种语言,使用您的库的任何人都会收到未定义的符号错误。标题中列出的函数未在任何地方定义。