我有一个具有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/

10-13 07:45