从c ++

时间:2016-04-26 17:06:24

标签: c++

我有一个共享库,里面存有一些函数。我想通过从另一个程序调用该库来访问这些函数。我早些时候在C中做过这个。

现在我想用C ++做同样的事情。我对C ++很陌生,非常需要任何建议。顺便说一句,共享库是用C语言编写的。我仍然可以在C ++程序中调用它并使用它的所有功能。 请帮我。一个示例程序将非常有用。

我使用的是ubuntu 14.04,编译器是随附的本机g ++。

2 个答案:

答案 0 :(得分:4)

使用dlopen加载共享库,并使用dlsym加载给定符号。与-ldl链接。

所以给定一个共享库hello.cpp,编译g++ -shared -fPIC -o libhello.so hello.cpp

#include <cstdio>

extern "C" void hello( const char* text ) {
  printf("Hello, %s\n", text);
}

(共享库应命名为lib*.so[.*]

现在调用main.cpp,编译:{{1​​}}

g++ -o main main.cpp -ldl

请参阅C++ dlopen mini HOWTO

答案 1 :(得分:0)

你说你已经在C中这样做了。实际上C ++是基于C的,所以你仍然可以像以前那样做。

通常需要执行以下步骤:

  • 使用c ++代码中库提供的某些方法
  • 找出哪个标头提供该方法,并将其包含在.cpp文件中
  • 根据库的头文件(Makefile中的编译器标志)编译C ++代码
  • 链接库(Makefile中的链接标志)