在c ++中将字符串转换为函数

use*_*404 0 c++ memory-management

我一直在寻找一种方法将函数动态加载到c ++中一段时间​​,我想我终于搞清楚了.这是计划:

  1. 将函数作为字符串传递给C++(通过套接字连接,文件或其他东西).
  2. 将字符串写入文件.
  3. 让C++程序编译并执行它.如果有任何错误,请抓住并返回.
  4. 使用新函数新执行的程序将函数的内存位置传递给当前正在运行的程序.
  5. 将函数的位置保存到函数指针变量(函数将始终具有相同的返回类型和参数,因此这简化了指针的声明).
  6. 使用函数指针运行新函数.

问题是,在第4步之后,我不想保持新程序运行,因为如果我经常这样做,许多正在运行的程序将会吸收线程.有没有办法关闭新程序,但保留存储新功能的内存位置?我不希望它在被使用时被覆盖或提供给其他程序.

如果你们对其他步骤也有任何建议,那也值得赞赏.可能还有其他库可以做与此类似的事情,可以推荐它们,但这是我想要研究的方法 - 如果不是为了完成它,那么知道如何这样做.

编辑:我知道动态链接库.这是我正在深入研究的内容,以便更好地理解C++中的工作原理.

Qua*_*nic 6

我看不出这是如何起作用的.当您运行新程序时,它将是一个单独的进程,因此其进程空间中的任何地址在原始进程中都没有意义.

不仅如此,您要调用的代码甚至不存在于原始进程中,因此无法在原始进程中调用它.

正如Nick在他的回答中所说,你需要一个DLL /共享库,或者你必须设置某种形式的进程间通信,这样原始进程就可以将数据发送到新进程,由相关函数进行操作然后再发回原来的过程.