我想使用MSVC编译器来构建DLL文件。
问题是DLL没有主入口点。它应该是一个共享DLL,用作应用程序的插件。我可以用这种方式使用GCC编译它:
gcc -c plugin.c gcc -shared -o plugin.dll plugin.o interface.def
DEF文件是在插件的函数导出中逃避名称修改(这是应用程序通过该函数使用插件的方式)。
如果我尝试使用MSVC编译它,链接器会抱怨必须定义入口点。
我想问另一个问题,MS Visual Studio套件中是否有像GCC“strip”这样的工具来减少EXE的文件大小?
答案 0 :(得分:3)
虽然DLL不需要入口点,但Microsoft C运行时需要一个入口点来初始化自身。有没有理由没有空的DllMain?
构建使用任何一个的DLL时 C运行时库,以便 确保CRT正确 初始化,
初始化 函数必须命名为DllMain()和 必须使用指定入口点 链接器选项 -entry:_DllMainCRTStartup @ 12 - 或 -
- 醇>
DLL的入口点必须明确 在进程附加和调用上调用CRT_INIT() 进程分离