Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
G++;与Cygwin中psapi的链接 我有一个C++项目,我用VisualC++来构建。在我使用的项目中: #pragma comment(lib, "psapi")_C++_Gcc_G++_Cygwin_Static Libraries - Fatal编程技术网

G++;与Cygwin中psapi的链接 我有一个C++项目,我用VisualC++来构建。在我使用的项目中: #pragma comment(lib, "psapi")

G++;与Cygwin中psapi的链接 我有一个C++项目,我用VisualC++来构建。在我使用的项目中: #pragma comment(lib, "psapi"),c++,gcc,g++,cygwin,static-libraries,C++,Gcc,G++,Cygwin,Static Libraries,为了链接到psapi 不过,G++似乎不支持这种语法。据我所知,您必须传递一个带有库名称的-l标志,以便与库进行链接 我尝试了-lpsapi.lib和-lpsapi 但gcc无法找到它。 所以我搜索了我能找到它的地方,显然它在/lib/w32api/libpsapi.a中。因此,我尝试了-llibpsapi.a和-llibpsapi,但它仍然无法找到它。 因此,我尝试使用-L标记添加路径,如So-L/lib/w32api,但它仍然找不到它。 然后我尝试添加两个环境变量,而不是-L标志: expo

为了链接到
psapi

不过,G++似乎不支持这种语法。据我所知,您必须传递一个带有库名称的
-l
标志,以便与库进行链接

我尝试了
-lpsapi.lib
-lpsapi

但gcc无法找到它。
所以我搜索了我能找到它的地方,显然它在
/lib/w32api/libpsapi.a
中。因此,我尝试了
-llibpsapi.a
-llibpsapi
,但它仍然无法找到它。
因此,我尝试使用
-L
标记添加路径,如So
-L/lib/w32api
,但它仍然找不到它。
然后我尝试添加两个环境变量,而不是
-L
标志:

export LIBRARY_PATH=/lib/w32api
export LD_LIBRARY_PATH=/lib/w32api
但它仍然不起作用

错误消息是:

/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld: cannot find -llibpsapi
collect2: error: ld returned 1 exit status
我最后一次尝试是:

g++ -llibpsapi -o Example.exe Stuff.cpp Example.cpp -static
如果我完全不使用
-l
标记,则会出现以下错误:

/tmp/cctDMx8f.o:Stuff.cpp:(.text+0x139): undefined reference to `EnumProcessModules'
/tmp/cctDMx8f.o:Stuff.cpp:(.text+0x139): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `EnumProcessModules'
/tmp/cctDMx8f.o:Stuff.cpp:(.text+0x181): undefined reference to `EnumProcessModules'
/tmp/cctDMx8f.o:Stuff.cpp:(.text+0x181): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `EnumProcessModules'
/tmp/cctDMx8f.o:Stuff.cpp:(.text+0x1db): undefined reference to `GetModuleBaseNameA'
/tmp/cctDMx8f.o:Stuff.cpp:(.text+0x1db): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `GetModuleBaseNameA'
collect2: error: ld returned 1 exit status

我想出来了。首先我必须使用
-lpsapi
,第二个重要的部分是我没有在
-o
标志之前插入它。以下措施效果良好:

g++ -o Example.exe Stuff.cpp Example.cpp -static -lpsapi