Wenn ich versuche, GetProcessMemoryInfo zu anrufen bekomme ich einen Fehler: undefined reference to `GetProcessMemoryInfo‘Fehler beim Versuch, die aktuelle Prozessspeichergröße auf C zu erhalten ++, MinGW
ich dieses Problem gesehen habe: Undefined reference to [email protected]
aber es löst meinen nicht.
Ich versuche zu wissen, was die Größe meines Prozesses im RAM ist, also muss ich die 'GetProcessMemoryInfo' Methode verwenden.
Mein Problem ist, dass die Verbindung bricht, wenn ich das tue.
CMakeLists.txt:
project(maxpath)
set(dir ${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${dir}/build")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -static-libgcc -static-libstdc++ -static -m64 -lpsapi")
file(GLOB LIB_ALG algorithms/*.hpp)
file(GLOB LIB_DS datastructures/*.hpp)
file(GLOB LIB_LOG include/*.h)
set(GRID_GENERATOR
${LIB_ALG}
${LIB_DS}
${LIB_LOG}
grid/generator.cpp
grid/grid.hpp)
set(GRID_SOLVER
${LIB_ALG}
${LIB_DS}
${LIB_LOG}
grid/main_grid.cpp
grid/grid.hpp
include/memory_helper.cpp include/memory_helper.hpp include/fnv.h)
add_executable(gridGenerator ${GRID_GENERATOR})
add_executable(gridSolver ${GRID_SOLVER})
Sie können sehen, dass ich das -lpsapi
Argument,
Der Fehler I erhalten:
[ 33%] Linking CXX executable "some path...\gridSolver.exe"
CMakeFiles\gridSolver.dir/objects.a(memory_helper.cpp.obj):memory_helper.cpp:(.text+0xf1): undefined reference to `GetProcessMemoryInfo'
CMakeFiles\gridSolver.dir/objects.a(memory_helper.cpp.obj):memory_helper.cpp:(.text+0x131): undefined reference to `GetProcessMemoryInfo'
C:/PROGRA~1/MINGW-~1/X86_64~1.3-P/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.3/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\gridSolver.dir/objects.a(memory_helper.cpp.obj): bad reloc address 0x0 in section `.pdata'
C:/PROGRA~1/MINGW-~1/X86_64~1.3-P/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.3/../../../../x86_64-w64-mingw32/bin/ld.exe: final link failed: Invalid operation
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [some path.../gridSolver.exe] Error 1
CMakeFiles\gridSolver.dir\build.make:121: recipe for target 'some path.../gridSolver.exe' failed
mingw32-make.exe[2]: *** [CMakeFiles/gridSolver.dir/all] Error 2
CMakeFiles\Makefile2:103: recipe for target 'CMakeFiles/gridSolver.dir/all' failed
mingw32-make.exe[1]: *** [CMakeFiles/gridSolver.dir/rule] Error 2
CMakeFiles\Makefile2:115: recipe for target 'CMakeFiles/gridSolver.dir/rule' failed
mingw32-make.exe: *** [gridSolver] Error 2
makefile:130: recipe for target 'gridSolver' failed
Ich arbeite mit CLION und mingw -w64 \ x86_64-4.8.3-posix-seh-rt_v3-rev2 \ mingw64
Gibt es einen anderen Weg o f tu dies (außer mit psapi)?
Danke für Ansering, jetzt bekomme ich diesen Fehler: Geben Sie Link-Bibliotheken für Ziel "GridSolver", die nicht von diesem Projekt gebaut wird. – yossico
Dann ist das von Ihnen angegebene Beispiel eindeutig falsch oder Sie haben es an die falsche Stelle eingefügt, weil Ihr Beispiel eindeutig ein 'gridSolver'-Ziel hat. Wenn Sie die 'target_link_libraries' vor dem' add_executable' hinzugefügt haben, lesen Sie bitte die cmake docs. – Dutow
Sie haben Recht, ich setze es vor den add_executable Teil – yossico