使用MSVC从命令行构建DLL(无入口点)

时间:2009-09-03 14:34:44

标签: c visual-studio dll visual-c++

我想使用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的文件大小?

1 个答案:

答案 0 :(得分:3)

虽然DLL不需要入口点,但Microsoft C运行时需要一个入口点来初始化自身。有没有理由没有空的DllMain?

  

构建使用任何一个的DLL时   C运行时库,以便   确保CRT正确   初始化,

     
      
  1. 初始化   函数必须命名为DllMain()和   必须使用指定入口点   链接器选项   -entry:_DllMainCRTStartup @ 12 - 或 -

  2.   
  3. DLL的入口点必须明确   在进程附加和调用上调用CRT_INIT()   进程分离

  4.   

KB94248