错误未定义引用'WinMain @ 16'

时间:2016-07-29 07:52:44

标签: c reference undefined

程序是否可以在没有main()功能的情况下编写?

我已编写此代码并将文件名保存为withoutmain.c 并收到错误

undefined reference to 'WinMain@16'"

我的代码

 #include<stdio.h>
    #include<windows.h>
    extern void _exit(register int code);
    _start(){
      int retval;
      retval=myFunc();
      _exit(retval);
    }
    int myFunc(void){
     printf("Hiii Pratishtha");
     return 0;
    }

请为我提供此问题的解决方案以及代码的正确内存构造以及在此程序的编译器端发生的情况。 谢谢!

1 个答案:

答案 0 :(得分:0)

  

程序是否可以在没有main()函数的情况下编写?

是的,可能有一个没有主要功能的C程序。 我建议两个解决方案.......

1)使用定义主

的宏
#include<stdio.h>
#include<windows.h>
#define _start main
extern void _exit(register int code);

int myFunc(void){
    printf("Hiii Pratishtha");
    return 0;
}

int _start(){
     int retval;
     retval=myFunc();
     _exit(retval);
}

2)Using Entry Point (Assuming you are using visual studio)

在Visual Studio开发环境中设置此链接器选项

/ENTRY:function

为.exe文件或DLL指定用户定义的起始地址的函数。

  1. 打开项目的“属性页”对话框。有关详情,请参阅 设置Visual C ++项目属性。
  2. 点击Linker文件夹。
  3. 单击“高级”属性页。
  4. 修改入口点属性。
  5. 如果您使用gcc,那么

    -Wl,-e_start
    

    -Wl,...将参数传递给链接器,链接器使用-e参数来设置条目函数