相关疑难解决方法(0)

如何在C或C++中获取/链接外部函数?

编辑: 我想我应该澄清,如果重要的话.我在AIX Unix机器上,所以我使用的是VAC编译器 - 没有gnu编译器. 结束编辑


我在C/C++中相当生疏,所以如果这是一个简单的问题,请原谅我.

我想从我的一些C程序中获取常用函数,并将它们放在共享库或共享对象中.如果我在perl中这样做,我会将我的sub放在perl模块中,并在需要时使用该模块.

为了举个例子,假设我有这个功能:

int giveInteger()
{
    return 1034;
}
Run Code Online (Sandbox Code Playgroud)

显然这不是一个真实世界的例子,但如果我想分享这个功能,我将如何进行?

我很确定我有两个选择:

  1. 将我的共享函数放在一个文件中,并在编译时使用我的主程序进行编译.如果我对共享功能进行了更改,我将不得不重新编译我的主程序.
  2. 将我的共享函数放在一个文件中,并将其编译为共享库(如果我的条款正确),并将我的主程序链接到该共享库.我对共享库所做的任何更改(在编译之后)都会在运行时集成到我的主程序中,而无需重新编译我的主程序.

我对这个想法是否正确?

如果是这样,我怎样才能完成这两种方法中的任何一种/两种方法?我搜索了很多,我似乎找到了如何将自己的程序链接到其他人的共享库的信息,但不知道如何创建我自己的共享函数并以我可以在我自己的程序中使用它们的方式编译它们.

非常感谢!

布赖恩


编辑:

结论

谢谢大家的帮助!我想我会在这篇文章中添加什么对我有用(对于AIX上的动态共享库),以便其他人可以受益:

我编译我的共享函数:

xlc -c sharedFunctions.c -o sharedFunctions.o
Run Code Online (Sandbox Code Playgroud)

然后使它成为共享对象:

xlc -qmkshrobj -qexpfile=exportlist sharedFunctions.o
xlc -G -o libsharedFunctions.so sharedFunctions.o  -bE:exportlist
Run Code Online (Sandbox Code Playgroud)

然后链接另一个程序:

xlc -brtl -o mainProgram mainProgram.c  -L. -lsharedFunctions
Run Code Online (Sandbox Code Playgroud)

另一条评论帮助我找到了这个链接,这也有所帮助:http: //publib.boulder.ibm.com/infocenter/comphelp/v7v91/topic/com.ibm.vacpp7a.doc/proguide/ref/compile_library.htm

再次感谢所有帮助我的人!

c c++ shared-libraries

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

c++ ×1

shared-libraries ×1