如何在C ++中运行时加载.o文件?

时间:2016-05-18 06:21:08

标签: c++ plugins linker loader dynamic-linking

我正在用C ++编写一个插件库,需要在编译宿主程序时调用一个未定义(仅声明)的远程函数。

我需要宿主程序在插件程序中调用一个函数,但我还需要一次编译宿主程序的灵活性和稍后的插件程序,并让主机从插件中运行远程函数。

以下是我的解决方案的基本实现:

我制作了这3个文件:

host.cpp:

#include "plug.h"

int main() {

    cout<<"Hello World!"<<endl;

    remoteFunction();
    return 0;
}

plug.cpp:

#include "plug.h"

void remoteFunction() {
    cout<<"in Remote"<<endl;
    return;
}

plug.h:

void remoteFunction(void);

然后我使用plug.cpp汇编g++ -c plug.cpp来生成plug.o

现在我可以使用g++ host.cpp -o executable plug.o来获取运行正常的单个可执行文件。但是这样我需要事先完全定义远程功能。 如何在不首先编译host.cpp的情况下编译plug.cpp

如果有一些完全不同的方法来获得此功能,欢迎提出建议。

0 个答案:

没有答案