Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;共享库未定义引用_C++_Linux_Reference_G++_Undefined - Fatal编程技术网

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中?什么时候链接?你什么时候跑步?