VC6.0中建立console程序:
#include<iostream.h>
class N
{public:
   int a;
   N(){a=1;cout<<"a="<<a<<endl;}
};
N nn;
void mymain()//设置自己的入口函数名
{}
//
将project/settings/link/entry-point symbol:设为mymain
//
F7后出现如下错误:
Compiling...
mymain123.cpp
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/mymain123.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

解决方案 »

  1.   

    提示信息就是说找不到main()函数啊为什么要自己定义一个入口函数晕
      

  2.   

    真是个问题,我也不太清楚。
    不过我试过链接到DLL版本的c/c++运行库,结果编译链接可以。
    还有,若是这个程序中不引用运行库的函数,不论包含静态的c/c++运行库或链接到DLL版本的c/c++运行库都可以。
      

  3.   

    to lekonpeng :
    一个人问我C++程序用一个其他函数名代替main可以不可以。
    我认为有个运行期启动函数是其入口,可以通过编译器改变这个入口即我说的将project/settings/link/entry-point   symbol:设为mymain。但是发现运行时错了,如上面大家看到的。
    to carolx 
    "还有,若是这个程序中不引用运行库的函数,不论包含静态的c/c++运行库或链接到DLL版本的c/c++运行库都可以。"
    那么输出怎么办?
      

  4.   

    to lgy1977:
    虽然可以不引用c/c++运行库的函数,但要输出总是要与OS提供的接口打交到。可以把程序链接到kernel32.dll user32.dll gdi32.dll,这样就可以使用WIN32 API 的很多函数,比如:CreateFile WriteFile CreateWindow DrawText MessageBox.
    为了程序的可移植性,用c/c++运行库还是比直接使用Win32 API更好移植。为了使你的程序编译链接OK,又要c/c++运行库的支持,那么就链接到DLL版本的c/c++运行库 msvcrt.dll msvcirt.dll,可以从这里设置:
    Project -> setting -> c/c++ 选项卡 -> 在Category 中选 Code generation ,将 Use Runtime Library 设置为 DLL multithreaded 或 Debug DLL multithreaded,然后编译就OK了。
      

  5.   

    to carolx :
    谢谢,按照你的说法果然好使!
    关于编译链接这些东西小弟知之甚少,关于为什么好使,我再学学。
    分数20给你(今天加不了,明天再加),别嫌少,希望关注我的新问题。