我正在使用 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个导入和函数,我该怎么做?
答案 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分钟的时间内,没有人问您为什么需要这个,他们只是 回答了这个问题!
不要: