我有一个具有DLLMain
函数的C ++程序,当该程序(实际上是一个DLL)被另一个程序加载时,该程序会运行一些代码。一切正常。
现在,当我这次编译同一个C ++程序,包括已经定义了.obj
函数的DLLMain
文件(由C代码制成)时,编译器(在本例中为Windows的VS2010)抱怨DLLMain
已经定义。
如果不使用链接器标记/FORCE:MULTIPLE
,如何将两个DLLMain
函数(在C和C ++程序中定义)同时存在并在同一最终DLL中运行?
仅供参考,在Linux中使用static void __attribute__((constructor)) _my_initializer(void)
的GCC可以正常工作(即,两个初始化程序可以共存于同一最终.so
文件中并运行)。
最佳答案
将DLLMain
函数之一重命名为其他名称(我将其命名为CDLLMain
),然后从另一个DLLMain
中调用该重命名的函数。在决定调用CDLLMain
的位置(DLLMain
中的第一件事,在返回之前最后一次(如果可以这样做的话),或者在中间的某个地方)时,在处理从中返回的值时(在可以调用您继续使用DLLMain
还是需要返回),并可能在两个DLLMain
函数中重复工作。
关于c++ - 多个DLLMain函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51521356/