我尝试在运行时使用dlopen()
将库链接到简单程序。我总是得到对dlopen错误的未定义引用。
要创建我的.so
文件,请使用以下命令:
g++ TestClass.cpp -o libHello.so -shared -fPIC
这是我的main.cpp
:
#include <iostream>
#include <dlfcn.h>
#include "TestClass.h"
int main()
{
void* handle1 = dlopen("libHello.so", RTLD_LAZY);
if (!handle1) {
std::cerr << "Cannot open library: " << dlerror() << '\n';
return 1;
}
printHello();
return 0;
}
TestClass.h
:
#ifndef LINKLIBONRUN_TESTCLASS_H
#define LINKLIBONRUN_TESTCLASS_H
extern "C"
{
void printHello();
};
#endif //LINKLIBONRUN_TESTCLASS_H
TestClass.cpp
:
#include <iostream>
#include "TestClass.h"
void printHello()
{
std::cout << "Hello" << std::endl;
}
所有文件都在同一目录中。