[英]C++ shared library undefined reference to `FooClass::SayHello()'
我正在制作一个 C++ 共享库,当我编译一个使用该库的主 exe 时,编译器给了我:
main.cpp:(.text+0x21): undefined reference to `FooClass::SayHello()'
collect2: ld returned 1 exit status
图书馆代码:
fooclass.h
#ifndef __FOOCLASS_H__
#define __FOOCLASS_H__
class FooClass
{
public:
char* SayHello();
};
#endif //__FOOCLASS_H__
fooclass.cpp
#include "fooclass.h"
char* FooClass::SayHello()
{
return "Hello Im a Linux Shared Library";
}
编译:
g++ -shared -fPIC fooclass.cpp -o libfoo.so
主:main.cpp
#include "fooclass.h"
#include <iostream>
using namespace std;
int main(int argc, char const *argv[])
{
FooClass * fooClass = new FooClass();
cout<< fooClass->SayHello() << endl;
return 0;
}
编译:
g++ -I. -L. -lfoo main.cpp -o main
该机器是 Ubuntu Linux 12
谢谢!
g++ -I. -L. -lfoo main.cpp -o main
是问题所在。 最新版本的 GCC 要求您按照相互依赖的顺序放置目标文件和库——根据经验法则,您必须将库标志作为链接器的最后一个开关; 即,写
g++ -I. -L. main.cpp -o main -lfoo
反而。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.