这与在 Windows 7 上运行时 Dev-C++ 附带的编译器“TDM-GCC 4.9.2 64-bit Release”有关。同样的事情也发生在 64 位版本上。“编译器选项”中的“调用链接器时添加以下标志”设置为-static-libgcc -lws2_32
,“调用编译器时添加以下标志”为std=c++11
。
不幸的是,我无法获得比这更多的信息,因为这是一台非常非常锁定的计算机。
回到家后,我会在那里进行测试并编辑任何新信息。
一个测试文件:
#include <windows.h>
#include <psapi.h>
#include <iostream>
int main() {
HANDLE h = GetCurrentProcess();
TCHAR name[100];
GetProcessImageFileName(h, name, 100);
std::cout << "Name is " << std::endl;
}
编译时,它给出以下错误:
C:\Users\[REDACTED]\AppData\Local\Temp\ccQz3L9P.o:test.cpp:(.text+0x2f): undefined reference to `GetProcessImageFileNameA'
据我所知,它调用GetProcessImageFileNameA
而不是GetProcessImageFileName
因为 a #define
in psapi.h
:
#define GetProcessImageFileName __MINGW_NAME_AW(GetProcessImageFileName)
__MINGW_NAME_AW(func)
是#define
d in _mingw_unicode.h
as func##A
,如果我理解正确的话,这就是新方法名称的来源。
Back in psapi.h
,DWORD WINAPI GetProcessImageFileNameA(HANDLE, LPSTR, DWORD);
已声明,但我在任何地方都没有找到它的定义,Dev-C++ 也不能。我相当肯定这就是问题所在。
我该如何解决?我对任何事情都持开放态度,包括切换编译器或 IDE,只要我可以将我使用的任何东西放在闪存驱动器上并尽可能少地携带它,并且最终结果不需要管理员运行权限。