C++ 尝试使用dll时出现库错误

C++ 尝试使用dll时出现库错误,c++,dll,C++,Dll,我正在尝试创建自己的dll并在另一个项目中使用它。我跟着这个 我的问题是,当我构建调用我的dll文件的测试项目时,我得到了这个错误 LINK : fatal error LNK1104: cannot open file 'C:\Users\...\wrapperOpenCV.lib 我不明白为什么程序需要一个lib,因为我只构建了一个dll 感谢您的帮助。该lib文件只是可执行文件和DLL之间的中间人。它被称为隐式链接所需的导入库 引用MSDN:() 通过隐式链接,可执行文件使用DLL链接到

我正在尝试创建自己的dll并在另一个项目中使用它。我跟着这个

我的问题是,当我构建调用我的dll文件的测试项目时,我得到了这个错误

LINK : fatal error LNK1104: cannot open file 'C:\Users\...\wrapperOpenCV.lib
我不明白为什么程序需要一个lib,因为我只构建了一个dll


感谢您的帮助。

lib
文件只是可执行文件和
DLL之间的中间人。
它被称为隐式链接所需的
导入库

引用MSDN:()

通过隐式链接,可执行文件使用DLL链接到导入 DLL制造商提供的库(.lib文件)。手术室 加载使用DLL的可执行文件时,系统将加载DLL


编译时链接到DLL的链接过程是:

  • 构建DLL。这将输出DLL本身和导入库.lib文件
  • 编译使用DLL的程序。这将使用包含文件来声明DLL导出的类型和函数
  • 链接步骤1中生成的导入库。这提供了DLL导出的函数的定义

  • 您正在请求链接器链接导入库,但找不到该库。要么它没有创建,要么链接器在错误的位置查找它。

    但是(仍然)需要一个存根接口来链接它!好吧,那我该怎么办?创建一个lib文件?我不明白为什么,因为教程不谈论这个,我所做的是假设工作,不是(我不真正使用C++和所有这些东西)当你构建DLL时,也应该自动构建LIB文件。在文件夹中查找这样的文件。事实上,您在问题中发布的链接有以下内容:
    //compile with:/EHsc/link mathfuncsdl.lib
    好的,我想我的错误是因为没有生成.lib文件。调试程序输出显示:1>OPENCVDLL.cpp 1>OPENCVDLL.vcxproj->C:\Users\…\OPENCVDLL\Debug\OPENCVDLL.dll我尝试了另一个没有opencv依赖项的简单项目,一切正常,我得到了.lib文件。。。奇怪。它可能来自opencv库吗?由于代码中的错误,dll没有生成。在dll的cpp文件中,我执行的是OPENCVDLL::OPENCVDLLtriangulatePoints(命名空间名称),而不是OpenCvWrapper::OPENCVDLLtriangulatePoints(类名)。在我改变了这个之后,代码运行得很好。感谢大卫、安卓47和保罗·麦肯尼兹!