在运行时链接库时未引用

时间:2019-11-01 08:41:57

标签: c++

我尝试在运行时使用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;
} 

所有文件都在同一目录中。

0 个答案:

没有答案