visual-studio - Visual C++ 运行时库链接器问题

标签 visual-studio visual-c++ visual-studio-2005 linker msvcrt

观察这个接近的场景,尽管它看起来与我之前的问题相同。我仍然没有得到答案。 所以请不要报告重复。

我有一个有 10 个依赖项的项目。首先,我在主项目的 C/C++ 代码生成部分中使用/MTD 选项进行编译,并且其所有依赖项均已成功构建。

接下来,我将选项从/MTD 更改为/MDd,并且所有依赖项目都再次获得 构建成功。但对于主项目,报告以下错误:


LIBCMTD.lib(osfinfo.obj) : error LNK2005: __open_osfhandle already defined in MSVCRTD.lib(MSVCR80D.dll)

LIBCMTD.lib(lseeki64.obj) : error LNK2005: __lseeki64 already defined in MSVCRTD.lib(MSVCR80D.dll)


sqlite3x.lib(sqlite3x_command.obj) : error LNK2005: "protected: wchar_t * __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >::_Myptr(void)" (?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ) already defined in msvcprtd.lib(MSVCP80D.dll)

MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: __mkdir already defined in LIBCMTD.lib(mkdir.obj)

MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: __strdup already defined in
LIBCMTD.lib(strdup.obj)

   Creating library Debug/Application.lib and object Debug/Application.exp
LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library

LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library

我该如何解决这个问题?

最佳答案

您不能混合使用 C 运行时库。如果您有一个编译为/MT(任何东西)的库或对象,则不能仅与/MD 链接。您需要与线程安全的 MSVCRT 链接。没有“如果”、“但是”。您不能混合使用C 运行时。我总是发现,即使在不执行线程的程序中,最好只使用/MT。

您是否运行了项目清理操作来删除已构建的对象和库?您在这里也依赖于 SQLite,您是否也重建了它?

关于visual-studio - Visual C++ 运行时库链接器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/935161/

相关文章:

visual-studio-2008 - 从 Visual Studio 连接到 WinCE 设备

c++ - 警告 LNK4099 : PDB 'vc80.pdb' was not found after switching to vista

c# - Call to Process 在 Debug 中运行良好,但在已安装的应用程序中不起作用

sql-server - 当数据源被锁定时如何部署SQL Reporting 2005?

c++ - 有没有办法在 Visual C++ 中编写带有变量参数列表的宏?

c++ - LNK2019,LPCTSTR和C++语法概述

c++ - enable_if + 可变参数模板 : is it UB or a MSVC bug?

c# - devenv CruiseControl 的记录器

sql - 如何在 Visual Studio 2013 中为多个 sql 单元测试编写 "pre-test"?

visual-studio - VS2005 "Add New Item..."对话框 - 默认项