c++ - 如何在不在命令行 g++ 中运行 .so 文件的情况下使用它

标签 c++ c ubuntu g++ shared-libraries

我创建了一个名为 car.so 的 .so 文件。我想在 test.cc 代码中测试和使用这个库。在命令行中我想编译:g++ test.cc -o test。我不想也链接(包括)库 car.so。

怎么做?

我的 test.cc 代码如下所示:

void* handle = dlopen("/home/v3/car.so", RTLD_LAZY);

  Car* (*create)();
  void (*destroy)(Car*);

  create = (Car* (*)())dlsym(handle, "create_object");
  destroy = (void (*)(Car*))dlsym(handle, "destroy_object");

  Car* carr = (Car*)create();
  carr->brake();
  destroy( carr );

我还想问一下是否可以在一个.so文件中包含3个.so文件。

编辑:

我在 Ubuntu/Linux 上工作

最佳答案

一般来说,您应该在 (application)/test.cc 中包含 .so 库的 .h 文件,然后通过链接该 .so 文件并使用生成的二进制文件来编译该 test.cc 文件。

我认为这个链接真的能帮到你.. http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

关于c++ - 如何在不在命令行 g++ 中运行 .so 文件的情况下使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7305249/

相关文章:

c++ - 在 Xcode 中安装 SFML 时出现问题 - 找不到合适的图像

c - printf() 和 scanf() float* 变量有多少种方法?

linux - 通过 ssh 登录 Amazon EC2

ubuntu - CouchDB 无法启动,没有具体错误

ubuntu - 无法在 Ubuntu 中 grep 文件,匹配的行是空白的?

c++ - 找不到 Qt vulkan 类

c++ - 我试图访问 C++ 多态类的 vtable,但由于核心转储而失败,为什么?

c++ - 演示程序错误 : '' was not declared in this scope

C 创建用户指定的文件和文件夹

C - 使用递归函数将文件夹和子文件夹中的所有 wav 文件路径放入字符串数组中