Когда я пытаюсь вызвать GetProcessMemoryInfo я получаю сообщение об ошибке: неопределенная ссылка на `GetProcessMemoryInfo»Ошибка при попытке получить текущий размер памяти процесса на C++, MinGW
Я видел этот вопрос: Undefined reference to [email protected]
, но он не решает мою проблему.
Я пытаюсь узнать, каков размер моего процесса в ОЗУ, чтобы сделать это, мне нужно использовать метод GetProcessMemoryInfo.
Моя проблема в том, что связь ломается, когда я это делаю.
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})
Вы можете видеть, что я использую -lpsapi
аргумент,
Ошибки я получаю:
[ 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
Я работаю с CLion и MinGW -w64 \ x86_64-4.8.3-posix-seh-rt_v3-rev2 \ mingw64
Есть ли другой способ o f делать это (кроме использования psapi)?
Спасибо за анзирование. Теперь я получаю эту ошибку: укажите библиотеки ссылок для целевого «gridSolver», который не создан этим проектом. – yossico
Тогда приведенный вами пример явно неверен или вы вставили его в неправильное место, потому что ваш пример явно имеет цель «gridSolver». Если вы добавили 'target_link_libraries' перед' add_executable', прочитайте документы cmake. – Dutow
Вы правы, я с удовольствием поместил его перед дополнением к дополнению – yossico