.lib中的主要功能是启动功能吗?

时间:2011-09-13 19:43:02

标签: c++ visual-studio-2010 cross-platform

我想做这样的事情:

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:函数_ _tmainCRTStartup

中未解析的外部符号主要引用

知道我做错了吗?

1 个答案:

答案 0 :(得分:3)

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

如果你希望你的库提供main函数,那很好,但是你必须确保它真正命名为main,因为这是链接器将要寻找的东西。