You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否不依赖.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 08:01:24