Quand je tente d'appeler GetProcessMemoryInfo je reçois une erreur: référence non définie à Je l'ai vu cette question `GetProcessMemoryInfo »erreur en essayant d'obtenir la taille actuelle de la mémoire de processus sur C++, MinGW
: Undefined reference to [email protected]
mais cela ne résout pas le mien.
J'essaie de savoir quelle est la taille de mon processus dans la RAM, pour cela, j'ai besoin d'utiliser la méthode 'GetProcessMemoryInfo'.
Mon problème est que le lien se brise quand je fais cela.
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})
Vous pouvez voir que j'utilise l'argument -lpsapi
,
L'erreur que je reçois est:
[ 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
Je travaille avec Clion et MinGW -w64 \ x86_64-4.8.3-posix-seh-rt_v3-rev2 \ mingw64
Existe-t-il un autre moyen de f cela (sauf utiliser psapi)?
Merci d'avoir répondu, Maintenant, j'ai cette erreur: spécifiez les bibliothèques de liens pour la cible "gridSolver" qui n'est pas construite par ce projet. – yossico
Ensuite, l'exemple que vous avez fourni est clairement faux ou vous l'avez collé au mauvais endroit, car votre exemple a clairement une cible 'gridSolver'. Si vous avez ajouté le 'target_link_libraries' avant le' add_executable', veuillez lire les docs de cmake. – Dutow
Vous avez raison, je mets accedently avant la partie ADD_EXECUTABLE – yossico