前言

昨天,我在编译我写的 OIVA 机器人框架的时候,突然报这个错,之前一直没有的,然后就检查检查,检查了三个多小时最终确定是常量支持库导致的。

还有一个问题,在运行或编译时提示某个函数不存在,_启动窗口 或 _启动子程序 不存在等,但实际这些函数都是存在的,无论我怎么尝试,一直都有这个提示,最后我只能新建一个e程序,然后菜单栏 -> 编辑 -> 导入其它程序,选择你不能载入的源码就行了,导入前记得删除默认的 程序集1以免造成错误~~

错误输出

在静态编译时,输出如下内容

LIBC.lib(crt0dat.obj) : error LNK2005: __cinit already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: _exit already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __exit already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __cexit already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __c_exit already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __C_Exit_Done already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __C_Termination_Done already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __exitflag already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __wpgmptr already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __pgmptr already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: ___winitenv already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __wenviron already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: ___initenv already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __environ already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: ___wargv already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: ___argv already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: ___argc already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __winminor already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __winmajor already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __winver already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __osver already defined in Libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __umaskval already defined in Libcmt.lib(crt0dat.obj)
C:\Users\Administrator\Desktop\abc\test.exe : fatal error LNK1169: one or more multiply defined symbols found

解决办法

这里提供两个方法,但我并不推荐使用这个库,我直接把这个库删了...

  1. 易语言根目录 -> tool -> link.ini,配置文件中加上 extra_args=/NODEFAULTLIB:LIBC.LIB
  2. 下载常量支持库1.7版(const.fne),此库修复了修复符号重定义的问题

替换前记得备份1.6版本的支持库,如果忘记备份可以重装易语言或从这里下载常量支持库1.6版(const.fne)

最后修改:2022 年 07 月 02 日
如果觉得我的文章对你有用,请随意赞赏