【发布时间】:2011-09-05 07:54:27
【问题描述】:
我创建了一个名为 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
【问题讨论】:
-
看看动态链接。这取决于操作系统,但我假设您使用某种 Linux。在那里,看看 dlsym 和相关函数。
-
是的。我在 UUNTU 工作。依赖操作系统是什么意思?是否可以使用包含库而不将库包含到编译命令的 G++ 一个 C 文件运行?
-
老兄,你的 Caps Lock 有问题
-
是的,这是可能的。在您的源代码中,您加载库并使用 dlsym 等在其中查找符号。我不知道语法,但是 dlsym 和相关函数的手册页应该可以帮助你。
-
为您创建一个新问题附加问题是获得良好答案的最佳方式,因为它是完全独立的问题(至少对我们而言)
标签: c++ c ubuntu g++ shared-libraries