gpt4 book ai didi

c++ - 在 visual studio 中构建 DLL 时使用静态库

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:55 24 4
gpt4 key购买 nike

我正在尝试使用依赖于 OpenCV 的 Visual Studio 12 社区构建 DLL。

我想将 OpenCV 作为 .lib 文件包含在内,这样我就不必单独分发它,但我需要将我的文件构建为 DLL。

但我无法将 Visual Studio 配置为将库导入 DLL。如果在

我的项目 -> 属性 -> 配置属性 -> 常规 -> 配置类型,

我选择“静态库(.lib)”并在:

我的项目 -> 属性 -> 配置属性 -> VC++ 目录 -> 库目录,

我选择 OpenCV .lib 文件的路径,然后在

我的项目 -> 属性 -> 配置属性 -> 链接器 -> 添加依赖项

我添加了对每个 .lib 的引用,它起作用了。

但是如果我更改配置类型做“动态库(.dll)”,Visual Studio 告诉我:

opencv_highgui2410d.lib(window.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in VectorsImport.obj

看来我只能用 .lib 文件制作 .lib 文件。但这似乎不太可能。我查过这个,但我只找到关于如何制作 .lib 文件或 .dll 文件或其中之一的指南。这一定很简单,但我想不通。我习惯了 Linux,其中 .o 可以很容易地包含到 .so 中。这让我很困惑。

最佳答案

该错误表明您正在尝试链接一个 OpenCV 模块,该模块已编译为使用静态 C/C++ 运行时,带有模块 VectorsImport.obj 的调试支持(可能来自您自己的项目) ,已编译为使用动态 C/C++ 运行时 并提供调试支持。 C 运行时库的四个变体在 Microsoft SDK 中不兼容,因此所有目标文件(来自您的项目或来自静态链接库)都必须匹配该设置。在 Visual Studio 2010 上,它可以在 C/C++-Compiler -> Codegeneration -> Runtime library 中找到。

请注意(黑体字应该强调)OpenCV 不是 DLL 或 .lib,但如果 OpenCV 作为单独的 DLL 链接,则允许使用不同类型的 C 运行时库,因此不匹配无关紧要。

关于c++ - 在 visual studio 中构建 DLL 时使用静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27626045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com