gpt4 book ai didi

c++ - 编译共享对象库,也从中调用函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:32:31 26 4
gpt4 key购买 nike

我有一个f2.cpp文件

// f2.cpp
#include <iostream>

void f2()
{
std::cout << "It's a call of f2 function" << std::endl;
}

我将 cygwin 与 crosstool 编译器 gcc 结合使用。

g++ -fPIC -c f2.cpp
g++ -shared -o libf2.so f2.o

我有一个 libf2.so 文件。现在我想在 f1 库(也是共享对象)libf1.so 中调用 f2 函数。

这是一个 f1.cpp,我想要 f1.so

// f1.cpp
#include <iostream>
void f1()
{
std::cout << "f1 function is calling f2()..." << std::endl;
f2();
}

我必须如何编译 f1.cpp?我不想使用 dlclose、dlerror、dlopen、dlsym...最后,我也想在 main.cpp 中使用 f1.so 作为共享对象库......而不使用 use dlclose、dlerror、dlopen、dlsym。当我有一个 f1.so 时,我必须如何编译 main.cpp?

// main.cpp
#include <iostream>
int main()
{
f1();
return 0;
}

最佳答案

在头文件中声明 f2()。并编译 libf1.so 类似于 libf2。

现在编译针对 f1 和 f2 的主链接。它应该看起来像这样g++ -lf2 -lf1 -L/path/to/libs main.o

关于c++ - 编译共享对象库,也从中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8167471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com