为什么我的空程序有太多未使用的导入?

时间:2019-03-25 15:50:08

标签: c++ visual-c++ pelles-c

我正在使用 Visual Studio 2012 & 2017 with C++ 11 Pelles C 9.0 with C++ 11 ...

当我构建一个空程序和DLL 时,它们在pe文件中包含许多未使用的导入!

VC ++ 具有 26个KERNEL32进口,而 Pelles 具有 70个KERNEL32进口 我的项目完全是空的!

我需要从链接器和编译文件中删除它们。

我有一个 DLL是用Pelles C编译的,它只有 4个导入,它实际上是使用的:

    KERNEL32.dll
    VirtualProtect  ord:0 rva2iat: 000012A0
    GetModuleHandleA  ord:0 rva2iat: 000012A8
    Sleep  ord:0 rva2iat: 000012B0
    CreateThread  ord:0 rva2iat: 000012B8

我想做同样的事情,我不需要任何 70个导入和函数,我该怎么做?

1 个答案:

答案 0 :(得分:0)

感谢 TimoVJL |解决方法如下:

#include <windows.h>

#ifdef _WIN64
#pragma comment(linker, "/ENTRY:DllMainCRTStartup")
#else
#pragma comment(linker, "/ENTRY:_DllMainCRTStartup@12")
#endif
BOOL WINAPI DllMainCRTStartup(HANDLE hDLL, DWORD dwReason, LPVOID lpReserved)
{
    if (dwReason == DLL_PROCESS_ATTACH) g_hmod = hDLL;
    return TRUE;
} 
  

我真的为这个社区感到抱歉,我记得   之前有帮助!   现在,我所看到的是”人们正在尝试证明A   不好的问题” ,而不是“ 人们正在努力给予良好的帮助”   回答!” 我在问,这不是任何人的事,我为什么需要这个   !这是关于安全性,学习和……什么事!在里面   这是一个问题!   在不到5分钟的时间内,没有人问您为什么需要这个,他们只是   回答了这个问题!

有一个不错的社区!

不要:

  • 没用
  • 有毒
  • 告诉人们他们需要什么!