我在Qt的Gui项目中,加入DCMTK编译后的MD/MDd运行时库,出现错误
1>------ Build started: Project: TestA, Configuration: Debug Win32 ------
1>Linking...
1>msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBCMTD.lib(typinfo.obj)
1>msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in LIBCMTD.lib(typinfo.obj)
1>LIBCMTD.lib(crt0init.obj) : warning LNK4098: defaultlib 'msvcrtd.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
1>D:\VSWorkSpace\TestA\Debug\TestA.exe : fatal error LNK1169: one or more multiply defined symbols found
默认库“LIBCMTD”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
如何解决,网上是这样说的:
工程一大,包含的头文件和库也就多了,冲突一时是不可避免的。 不过还好, 只是Warning,并不影响整个工程的编译和运行。但是一些项目就要求尽量不出现Warning,因为你不知道将来项目的Bug会不会是由此而引起。严格,未雨绸缪,总是一件好事。谁也不想将来的某个时候去Debug N年前的玩意。 痛苦啊~~
MSDN上的解释为:
You are trying to link with incompatible libraries.
Important The run-time libraries now contain directives to prevent mixing different types. You’ll receive this warning if you try to use different types or debug and non-debug versions of the run-time library in the same program. For example, if you compiled one file to use one kind of run-time library and another file to use another kind (for example, single-threaded versus multithreaded) and tried to link them, you’ll get this warning. You should compile all source files to use the same run-time library.
总之,一句话,lib之间有冲突。需要删除导入的一些libs。
例如编译Release版本的单线程的工程,在linker的命令行加入如下的参数:
/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib
当然,通过VC6.0的开发环境也可以配置。选择Project -> Setting,出现Project Setting对话框,单击Link标签,在Category下拉菜单中选择Input,在下方的Ignore libraries: 输入框中输入“被忽略的library”框中对应的libs。输入时注意当前Build是什么版本,libs之间用“,”隔开。“Ingore all default libraries”不能勾选。
- 大小: 62.9 KB
分享到:
相关推荐
需要注意的是,可能出现的编译警告如 `LINK : warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library` 可以忽略。输入和输出函数如 `cinnum` 和 `cotnum` 需要根据进制...
1.7.1版(2010年11月28日) ... 2、修改变体型的“赋值”方法给变体型数组赋值失败的BUG。 3、应易友的要求,可以自行选择恢复原来LOADER,体积将...opt=/ENTRY:BMEntrypoint /nodefaultlib:LIBCMT /DEFAULTLIB:MSVCRT
2. **避免冲突**:如果不这样做,可能会遇到类似于 `warning LNK4098: defaultlib "libcmt.lib" conflict with use of other libs; use /NODEFAULTLIB:library` 的警告。 #### 五、使用 libjpeg 1. **复制必要的...
* DEFAULTLIB/EXPORT/INCLUDE/MANIFESTDEPENDENCY /MERGE/SECTION * DEFAULTLIB:library:将一个 library 添加到 LINK 在解析引用时搜索的库列表。 * EXPORT:entryname[,@ordinal[,NONAME]][,DATA]:使用该选项,...
- **使用 `/NODEFAULTLIB`:**如果默认链接的库文件导致了符号重复定义,可以使用 `/NODEFAULTLIB` 选项来禁用默认库的链接。 - **使用 `/DEFAULTLIB`:**指定链接器使用的默认库,以确保正确链接所需的库文件。 ...
**默认库defaultLib.js:扩展JavaScript与DOM API的通用工具** `defaultLib.js`是一个针对JavaScript和DOM API的通用库,旨在提供一系列便捷的函数和方法,以简化开发者的工作流程,提高开发效率。这个库的核心目标...
Verilog HDL(Hardware Description Language)是一种广泛使用的硬件描述语言,用于设计、验证和实现数字电子系统的逻辑。这个“verilog源程序实例”压缩包显然包含了一系列Verilog代码示例,旨在帮助初学者理解并...
这可以通过在源代码中使用`#pragma comment(lib, "dllname.lib")`来完成,或者在链接器选项中指定`/DEFAULTLIB:dllname.lib`。同时,需要使用`__declspec(dllimport)`声明DLL函数,告诉编译器这些函数是在另一个模块...
常用的 `linker` 选项包括 `/DEFAULTLIB`、`/EXPORT`、`/INCLUDE` 和 `/SECTION` 等。 - **/DEFAULTLIB** 该选项可以在链接时自动添加指定的库到搜索列表中,从而确保链接器能找到这些库。这对于需要频繁使用的...
这通常涉及设置仿真模型库(如xil_defaultlib、unisim等)和库路径映射。 4. **HDL仿真**:理解VHDL和Verilog这两种主要的硬件描述语言,并掌握如何在Modelsim中进行仿真测试,包括编写测试平台、设置激励信号、...
在配置过程中,编译器可能会发出LNK4098错误,提示defaultlib"libcmt.lib"与其他库的使用存在冲突。这种情况下,建议使用release版本进行构建。 在配置过程中,还需要对库文件进行链接。如示例所示,需要在链接选项...