竟然连编译或LINK出错行号都没无给用户显示出来,这一点还不如TC可以清楚地看到出错行号TMD不人性啊
还有一段简单的程序,出错硬是搜遍整个INTERNET都没解决
#include<windows.h>
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine,int nCmdShow)
{
MessageBox(NULL,"Hello,World!","第一个Windows C程序",MB_OK|MB_ICONASTERISK);
return 0;
}
--------------------
编译能通过,可是LINK就出错
--------------------Configuration: app - Win32 Debug--------------------
Linking...
app.obj : error LNK2001: unresolved external symbol __imp__MessageBoxA@16
LIBCMTD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/app.exe : fatal error LNK1120: 2 unresolved externals
执行 link.exe 时出错.app.exe - 1 error(s), 0 warning(s)
VC++的可视或环境简单是在像非人性的基础上设计的,也许是用习惯了DELPHI吧

解决方案 »

  1.   

    缺头文件了吧?我也觉得delphi的编译和错误提示有的地方是比vs好,同样是vs里的,c#的错误提示就友好且精确的多
      

  2.   

    狗屁VC++明天再来骂,把我搞惨了 
    我只想写一个"世界你好"的程序,一代只有4行,调错了七个半小时,看看我的回复时间就知道了,再是按着教程的指导来做的,现在问题解决了,就想骂TMD.他的错误提示简单答非所问.根本扯不到一起去,调错就只能个猜TNND
      

  3.   

    链接出错又不是编译出错,怎么给你行号啊明显不认识MessageBox函数看看是不是启用了MFC啊
      

  4.   

    嗯,创建工程之前没看教程,创建的时候没注意选工程类型,发现错误的时候没按F1看帮助,而且搜索的时候没看Google的帮助……多学习一下就好了。
      

  5.   

    楼主想写的是Win32程序,无奈不会用VC,选择了Win32的控制台类型工程,编译能通过,可是连接的时候VC没有把Win32图形工程的库给连接上,能怪谁呢?只能怪你不会用,或者怪你没看好工程类型。
      

  6.   

    级同意 jiangsheng(蒋晟.MSMVP2004Jan) 任何时候都要保持头脑清醒^_^ , 面对异常的情形要多想想自己的原因,
    说 vc 不如 tc  会被人骂sb的
      

  7.   

    编译期间不检查符号的有效性的所以编译器怎么知道MessageBox是个可用的函数呢?不知道,那是连接器的事情,自然连接器就不会给出行号了
      

  8.   

    link出错是由于链接器找不到函数的实现。
    你包含的头文件指出了MessageBox的原型(指明了MessageBox是一个函数,并且定义了函数的原型),所以compile可以通过,但是link时,链接器必须找到这个函数的实现。你可以通过三个方法使得你的程序可以link通过:
    一:呵呵,你自己写一个MessageBox得实现
    二:通过静态链接某个库,这个库有MessageBox的实现
    三:动态从某个实现了MessageBox的动态库中获取MessageBox的地址link出错是不可能给出出错代码位置的,只有compile错误才能给出错误位置。
      

  9.   

    正解:
    动态从user32.dll获取MessageBox的地址
    或者链接 User32.lib 选择Win32控制台同样可以使用MessageBox函数的。