问题描述
- VS2005编译出现error C2375的问题
-
MFC的工程,也用到了OPENGL。之前编译链接运行都没有问题,但是现在要增加一个模块,打算用vector来写,所以include了<vector>(代码完全没变,就增加了一行#include<vector>).这时候编译报错
1>c:program filesmicrosoft visual studio 8vcincludeeh.h(58) : error C2375: “terminate”: 重定义;不同的链接
1> c:virtualsimvsrad2.0includeruntime.h(122) : 参见“terminate”的声明
runtime.h也是一个用到的外部库,里面的terminate函数其实在程序里面并没有使用。求问高手有什么解决办法。
解决方案
因为terminate在程序里面没有用到所以在run_time.h中把terminate函数的声明注释掉了,现在编译也是可以通过了。
不知道这样会不会有什么问题,有没有更好的解决方法。
其次,注释掉之后还出现了链接错误1>MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _printf 已经在 Libcmtd.lib(printf.obj) 中定义
1>MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _rand 已经在 Libcmtd.lib(rand.obj) 中定义
1>MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: "public: virtual __thiscall std::exception::~exception(void)" (??1exception@std@@UAE@XZ) 已经在 Libcmtd.lib(stdexcpt.obj) 中定义
1>MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: "public: __thiscall std::exception::exception(void)" (??0exception@std@@QAE@XZ) 已经在 Libcmtd.lib(stdexcpt.obj) 中定义
1>MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: "public: __thiscall std::exception::exception(class std::exception const &)" (??0exception@std@@QAE@ABV01@@Z) 已经在 Libcmtd.lib(stdexcpt.obj) 中定义
1>MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: "public: __thiscall std::exception::exception(char const * const &)" (??0exception@std@@QAE@ABQBD@Z) 已经在 Libcmtd.lib(stdexcpt.obj) 中定义
1>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) 已经在 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) 已经在 Libcmtd.lib(typinfo.obj) 中定义
解决方案二:
重复定义,两个库有冲突。
是你的线程模式和lib定义的不一样,所以同样的函数重复定义了,根据这个图的指示重新设置下。