我正在尝试使用lcc-win32 / wedit在c中编译一个简单的hello world程序,我对windows c编程有点不熟悉。
#include <stdio.h>
int main(void){
printf("hellow\n");
return 0;
}
编译程序时,控制台输出为:
Wedit output window build: Tue Jun 15 09:13:17 2010
c:\lcc\lib\lcccrt0.obj .text: undefined reference to '_RtlUnwind@16'
c:\lcc\lib\lcccrt0.obj .text: undefined reference to '_signal'
c:\lcc\lib\lcccrt0.obj .text: undefined reference to '_raise'
c:\lcc\lib\lcccrt0.obj .text: undefined reference to '_exit'
asctoq.obj .text: undefined reference to '_strnicmp'
defaulttrap.obj .text: undefined reference to '__imp___iob'
defaulttrap.obj .text: undefined reference to '_fwrite'
defaulttrap.obj .text: undefined reference to '_itoa'
defaulttrap.obj .text: undefined reference to '_strcat'
defaulttrap.obj .text: undefined reference to '_MessageBoxA@16'
defaulttrap.obj .text: undefined reference to '_abort'
powlasm.obj .text: undefined reference to '_pow'
qfloat.obj .text: undefined reference to '_memset'
qfloat.obj .text: undefined reference to '_strchr'
qfloat.obj .text: undefined reference to '_memmove'
strlcpy.obj .text: undefined reference to '_memcpy'
xprintf.obj .text: undefined reference to '_localeconv'
xprintf.obj .text: undefined reference to '_strtol'
xprintf.obj .text: undefined reference to '_wcslen'
xprintf.obj .text: undefined reference to '_wctomb'
xprintf.obj .text: undefined reference to '_fputc'
search
Compilation + link time:0.1 sec, Return code: 60
当我尝试在wedit中执行程序时,我得到一个对话框,显示“hello.exe不是最新的。重建?”
如果我点击是,则没有任何反应。如果我点击否,会弹出一个dos窗口说明
“C:\ LCC \项目\ LCC2 \用hello.exe”
返回码-1
执行时间0.001秒
按任意键继续...
无论我编译/重建多少次,都会继续发生。
有什么想法吗?
答案 0 :(得分:1)
您需要告诉链接器链接C运行时库以及Windows kernel32.lib和user32.lib导入库。后两者需要安装Windows SDK。
您正在使用的编译器非常模糊。您需要阅读其手册中的小字,以确定如何正确配置它,以便链接器链接这些库。如果你不能自己解决这个问题或者找一个熟悉这个IDE的人,我建议你下载免费的Microsoft Visual Studio Express C ++版。它通过预设大量编译器和链接器设置的项目模板来处理大量细节。您需要Win32控制台应用程序模板。
答案 1 :(得分:1)
似乎问题出在W7的“Microsoft Security Essentials”中。问题的解决方案在http://compgroups.net/comp.compilers.lcc/.text-undefined-reference-to描述。
答案 2 :(得分:0)
将以下内容添加到页面顶部:
#include <stdio.h>