这与在Windows 7上运行的Dev-C++附带的编译器一起使用,"TDM-GCC 4.9.2 64位版本“。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,因为是psapi.h中的#define
#define GetProcessImageFileName __MINGW_NAME_AW(GetProcessImageFileName)__MINGW_NAME_AW(func)是_mingw_unicode.h中的#defined作为func##A,如果我正确理解,这就是新方法名称的来源。
在psapi.h中,DWORD WINAPI GetProcessImageFileNameA(HANDLE, LPSTR, DWORD);是声明的,但我在任何地方都没有找到它的定义,开发-C++也不能。我很确定这就是问题所在。
我怎么才能修好它?我对任何事情都是开放的,包括切换编译器或IDE,只要我能把我使用的任何东西放在闪存盘上,并且尽可能少的烦扰地携带它,并且最终的结果不需要管理员特权来运行。
发布于 2015-10-15 17:31:43
GetProcessImageFileName是一个windows函数,您需要在正确的库中链接才能到达它。
它被定义为宏,可以是GetProcessImageFileNameA,也可以是GetProcessImageFileNameW,这取决于您是编译"wide“还是”窄带“。
Win32 API有每个函数的Unicode和ascii版本(至少包含字符串的函数)。通常,ascii版本将字符转换为Unicode,并在内部调用其他注入。
https://stackoverflow.com/questions/33154710
复制相似问题