覆盖附加的DLL / SO中的导出数据是合法的吗?
示例(win32):
t_Controller controller = (t_Controller*) GetProcAddress(SomeDLL, "Controller");
controller->Args = args; // <--- here
controller->Run();
答案 0 :(得分:1)
好的 - 所以你要导出某种结构。
一旦获得了指向结构的指针,从exe中写入结构是否合法,完全取决于它在dll中是否合法写入结构。
即。它是一个const结构吗?
如果它没有定义为const,那么你可以写它。
如果它被定义为const,那么你的GetProcAddress
只是一种复杂的方式来关闭const
,这将一如既往地导致未定义的行为。即它可能,也可能不起作用,这取决于你的编译器实现 - 通常是否在全局范围内声明的静态对象放在只读数据部分。