Я только что перешел на C ++ с Python. Я использую VSCode, и я хотел бы использовать следующую библиотеку: https://github.com/Celebrandil/CudaSift.
Так что я клонирую репозиторий, создаю папку для сборки внутри, cd в папку для сборки, используйте: cmake ..
затем sudo make
и наконец sudo make install
Я получаю следующий вывод в консоли:
После выполнения этих шагов я получаю файл общей библиотеки с именем 'cudasift'.
Исходя из того, что я понимаю, я должен затем скомпилировать свой код, который выглядит следующим образом:
#include <iostream>
#include <opencv4/opencv2/opencv.hpp>
#include <cudaImage.h>
#include <cudaSift.h>
int main(){
SiftData siftData;
cv::Mat img;
cv::imread("Cam_0-19129655-STATIC-exp:200-gain:27.jpg").convertTo(img, CV_32FC1);
CudaImage cuda_img;
// cuda_img.Allocate(4000, 3000, 4000, false, NULL, (float*) cuda_img.d_data);
// cuda_img.Download();
int numOctaves = 5;
float initBlur = 1.0f;
float thresh = 3.5f;
float minScale = 0.0f;
bool upScale = false;
// ExtractSift(siftData, cuda_img, numOctaves, initBlur, thresh, minScale, upScale);
// FreeSiftData(siftData);
return 0;
}
Поэтому я должен выполнить что-то вроде: g++ test.cpp -o test 'pkg-config opencv --cflags --libs' -I/path/to/my/headers -L/path/to/my/shared/library -lmylib
Проблема в том, что моя вновь полученная разделяемая библиотека называется 'cudasift', но -lmylib будет искать файл с именем 'libmylib.so', поэтому я переименую свою библиотеку в 'libcudasift.so', и Я получаю следующую ошибку:
/usr/bin/ld: /home/user/Documents/packages/CudaSift/build/libcudasift.so: _ZSt4cout: invalid version 13 (max 0)
/home/user/Documents/packages/CudaSift/build/libcudasift.so: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
Makefile:2: recipe for target 'test' failed
make: *** [test] Error 1
The terminal process terminated with exit code: 2
Я остаюсь здесь застрявшим после нескольких часов поисков ответа. PS: я использую VSCode