Man*_*ora 6 c++ linker visual-studio-6
我在链接应用程序时在MFC VS6项目中遇到这些类型的错误:
msvcrt.lib(MSVCRT.dll) : error LNK2005: _atoi already defined in LIBC.lib(atox.obj)
Run Code Online (Sandbox Code Playgroud)
我知道它意味着什么(一个函数存在于两个不同的库中); 解决它我应该排除2个库(msvcrt.lib
或libc.lib
)中的一个.
但是,如果我这样做,会有各种未解决的外部错误.所以我想继续使用这两个库.
有没有办法告诉链接器我想要使用该_atoi
函数libc.lib
而不是msvcrt.lib
(或其他方式)?
任何帮助或方向都会很棒.
fbo*_*net 11
此错误当然意味着您要链接使用不同运行时库编译的两段代码.MSVCRT.dll是动态版本,而LIBC.lib是静态版本.如果你这样做,那么一切都会破裂.尝试查找代码的哪些部分使用哪个版本,然后对其进行排序.
似乎有一个选项可以用来忽略这样的错误:在项目设置>链接>中选中“强制文件输出”。即使存在链接错误,这也会生成程序。
构建输出给出如下内容:
msvcrt.lib(MSVCRT.dll) :警告 LNK4006:_atoi 已在 LIBC.lib(atox.obj) 中定义;忽略第二个定义
当然,您需要小心使用此选项,因为它可能会生成在某些情况下无法工作的应用程序,但在这里它可能不会造成任何损害(我希望)。
感谢您的其他答复,但这似乎不是我的具体情况的选择。