我在想如果一个程序在一些可执行文件或共享库中如果没有编译在一起,它们如何“识别”某些功能。我知道这听起来令人困惑,下面是一个非常详细的解释:如何在共享库中执行某些功能
假设我有一个名为“A”的程序。现在我想在某个特定位置放置一些额外的编译共享库“B”,以便“A”可以在其中运行函数,而不必更改A本身的代码。当然,我也可以使用一些额外的文件,如txt文件,当然可以看到源代码。我应该如何设计整个系统才能工作?
如果你把它想象成一个游戏,E.G.一场纸牌游戏,这里就是情况。你有这个游戏,并且你坚持写纯粹的C++(所以你必须编译所有东西)。现在你已经有了公开的游戏。但是一些DIYer想要在游戏中添加一些新的卡(他们不能改变可执行文件本身,因为如果有更多的那个DIY呢?)。您可以通过txt或db或其他方式来完成卡数据部分,但对于“效果”部分,您必须对其进行编码并将其编译为某些内容。主程序应该如何在编译的库中调用卡“效果”功能?
顺便说一句,我知道我可以用像LUA这样的简单语言来完成它,但是如果我想以“编译的方式”来做呢?
下面是更具体的例子:
A.cpp:INT主(){FuncA的行(); FuncB();跳到FuncC(); ...} //和别的
B.cpp:INT TheFunction(){...} //这是它
程序不知道的 “B” 的存在,但它如果我可以编译B到某种B.so,并将其放在指定的文件夹中,“A”可以执行TheFunction()我知道声音真的可以使用,但这是我我在想:
编译B时,使用某种方法让编译器生成某种类型的函数指针列表到一个txt文件。程序A读取该文件,并运行指针指向B的函数。
这可能吗?或者我真的理解错了吗?
阅读微软的COM:http://en.wikipedia.org/wiki/Component_Object_Model。 – Kevin 2014-10-29 03:10:25