能否不依赖.lib文件使用OpenCV?动态加载问题求助
仅用DLL实现OpenCV功能是否可行?
核心需求
我正在开发一个DLL项目,链接.lib文件时代码可正常运行,但希望仅使用.dll文件实现功能,请问这是否可行?
核心代码(OpenCV相机捕获逻辑)
cv::VideoCapture cap; cap.open(0); if (!cap.isOpened()) { std::cerr << "Error: Could not open the camera." << std::endl; return -1; } cv::namedWindow("Live Camera", cv::WINDOW_NORMAL); while (true) { cv::Mat frame; cap >> frame; if (frame.empty()) { std::cerr << "Error: Blank frame captured." << std::endl; return -1; // Indicate failure } cv::imshow("Live Camera", frame); int key = cv::waitKey(10); if (key == 27) { return 0; // Exit successfully when 'Esc' key is pressed } else if (key == 'p' || key == 'P') { std::string picName = "picture.jpg"; cv::imwrite(picName, frame); std::cout << "Picture captured and saved as '" << picName << "'" << std::endl; } }
尝试的动态加载代码(加载自定义DLL)
我尝试用以下方式加载库但陷入困境,不知后续如何编写代码,请问不使用.lib是否可行?
typedef int(*procCaptureCamera)(); HMODULE dllHandle = LoadLibrary(L"myTestingLibrary.dll"); if (dllHandle == NULL) { std::cerr << "Error: Could not load the DLL." << std::endl; return 1; } procCaptureCamera mCaptureCamera = (procCaptureCamera)GetProcAddress(dllHandle, "CaptureCamera"); if (mCaptureCamera == NULL) { std::cerr << "Error: Could not find the function in the DLL." << std::endl; return 1; }
遇到的链接错误
移除链接属性中的.lib后,出现如下编译错误:
Error LNK2001 unresolved external symbol "public: __cdecl cv::Mat::~Mat(void)" (??1Mat@cv@@QEAA@XZ) Testing C:\Users\Testing\Testing\dllmain.obj 1
请求
是否有OpenCV动态加载的相关参考资料?
内容的提问来源于stack exchange,提问作者Nadia Shokkan
相关产品推荐
相关产品推荐

