C++ C++;共享库未定义引用
我有这样的文件: 利福C++ C++;共享库未定义引用,c++,linux,reference,g++,undefined,C++,Linux,Reference,G++,Undefined,我有这样的文件: 利福 class foo { public: foo() = default; virtual ~foo(); }; libfoo.cpp #include "libfoo.h" foo::~foo() { /* code here */ } test.cpp #include <libfoo.h> int main() { foo f; } 你知道我可能做错了什么吗? (我在类中声明的所有函数,如模板函数,工作正常,不会导致未定义的引用)我试图重现错
class foo
{
public:
foo() = default;
virtual ~foo();
};
libfoo.cpp
#include "libfoo.h"
foo::~foo() { /* code here */ }
test.cpp
#include <libfoo.h>
int main()
{
foo f;
}
你知道我可能做错了什么吗?
(我在类中声明的所有函数,如模板函数,工作正常,不会导致未定义的引用)我试图重现错误,但失败了 我创建了文件(稍作修改):
像这样建造的:
g++ -std=c++0x -Wall -Werror -fPIC -c -o libfoo.o libfoo.cpp
g++ -shared libfoo.o -o libfoo.so
$ g++ -std=c++0x -Wall -Werror -fPIC -c -o libfoo.o libfoo.cpp
$ g++ -shared libfoo.o -o libfoo.so
$ g++ test.cpp -L. -lfoo
$ env LD_LIBRARY_PATH=. ./a.out
然后像这样跑:
g++ -std=c++0x -Wall -Werror -fPIC -c -o libfoo.o libfoo.cpp
g++ -shared libfoo.o -o libfoo.so
$ g++ -std=c++0x -Wall -Werror -fPIC -c -o libfoo.o libfoo.cpp
$ g++ -shared libfoo.o -o libfoo.so
$ g++ test.cpp -L. -lfoo
$ env LD_LIBRARY_PATH=. ./a.out
我没有错。你确定你的代码有问题吗 这是你真正的代码中的打字错误吗
foo:~foo()
应该是foo::~foo(){/*code here*/}对不起,我在这里键入代码时出现了打字错误only@Henningsson使用库时如何链接?@Henningsson那么什么时候会出现错误?在你的IDE中?什么时候链接?你什么时候跑步?