C++ 如何发送或保存函数,并在C+中接收或恢复函数并执行它+;?

C++ 如何发送或保存函数,并在C+中接收或恢复函数并执行它+;?,c++,function,serialization,C++,Function,Serialization,是否有任何方法可以将函数发送或保存为文件?我想在Windows平台上用C++做这件事。 我假设读者和发送者或保存者之间有某种约定 如果我像下面这样发送,可以吗? 服务器端: label1: int func1(int somevar){ int a = 1; return somevar+a; } label2: send(sockfd, label2-label1, sizeof(int), 0) //send a size first send(sockfd, label1

是否有任何方法可以将函数发送或保存为文件?我想在Windows平台上用C++做这件事。 我假设读者和发送者或保存者之间有某种约定

如果我像下面这样发送,可以吗? 服务器端:

label1:
int func1(int somevar){
    int a = 1;
    return somevar+a;
}
label2:

send(sockfd, label2-label1, sizeof(int), 0) //send a size first
send(sockfd, label1, label2-label1, 0); // send a "function" 

提前谢谢GetProcAddress()从dll中“检索”函数。不,这根本无效。这基本上是不可能的——你需要使用某种中间语言,或者在汇编中表达函数或分解得到的二进制文件。

< P>不,在C++中没有办法。允许传输可执行代码的语言包括Erlang、Ruby和TCL


<>克里斯

C++,这是绝对不可能的。


您可以发送一个包含函数的预编译动态链接库,并在端点加载和执行它们。

C++是一种静态语言-您不能修改正在运行的可执行文件并添加新函数。像Ruby这样的语言可以让你做到这一点,但它不是C++的一个特性。 如果真的需要的话,你可以把你的函数放在一个文件中,通过网络发送,让你的程序在另一端编译这个文件,然后用进程中的popen或者其他什么运行它。。。但到那时,这已经变得相当可笑了

我会说重新设计,这样你就不需要这个了。

你可以做到! 只需编写自己的编译器,它不编译文件,而是等待信号,构建文件,然后编译它们。然后可能运行它们

基本上:

  • 发送函数文本
  • 接收函数文本
  • 用你的程序编译文本
  • 执行编译后的代码
  • 利润
    根据他的例子,我认为op希望通过套接字将源代码发送到远程主机,因此这种方法不适用。他可以发送动态库并将其加载到远程主机上(如果处理器架构和/或操作系统相同)。将任意代码发送到远程主机通常被认为是一个非常糟糕的主意,主要是因为这是一个明显的安全漏洞,但也因为调试问题非常困难,而且绝对不切实际。即使您保证两台机器具有相同的体系结构,您也几乎无法控制出现bug时会发生什么(例如,如果有人在其中放置函数调用)。顺便说一下,在几个体系结构上,一些C++ Buuthin(例如,代码>操作符/<代码> >代码>双参数)实际上是函数调用。我知道一个允许这样的操作系统:VxWorks。它有一种方法,您可以将对象或库文件(类似于ELF)上载到目标,并让目标动态链接它。当然,在这方面有很大的警告,而且速度非常慢。也有像谷歌这样的东西,尽管一次传输不止一个函数。目的地的框架非常庞大,你想做的事情非常非常困难。从安全角度来看,这也是非常危险的。如果您能够描述通过序列化(将一段数据转换为一个字节串并返回)函数试图解决的问题,那就更好了。这个问题可能比函数序列化更容易解决。