.lib中的Main函数作为启动函数

Main function in .lib as startup function?

本文关键字:函数 启动 lib Main 中的      更新时间:2023-10-16

我想这样做:

library.h

#define main ClientMain

libary.cpp

#define main ClientMain
extern "C" int main (int argc, char *argv[], char *envp[]);
#ifdef WINDOWS
int WINAPI WinMain()
{
  // other code here
  ClientMain(0, 0, 0);
}
#endif

client.cpp//平台无关代码

#include library.h
int main(int argc, char* argv[]){ // stuff}

然而,我一直得到错误:MSVCRTD.lib(crtexe.obj):错误LNK2019:未解析的外部符号main在函数__tmainCRTStartup

中引用

你知道我做错了什么吗?

您正在将Windows程序编译为控制台程序。在这种情况下,期望的入口点是main,而不是WinMain。后者用于GUI程序。您的程序有一个名为WinMain的函数和一个名为ClientMain的函数,但没有main

如果你想让你的库提供main函数,这是可以的,但你必须确保它真正的命名为main,因为这是链接器将寻找的