使用 wxWdigets 时发现的好玩的事情--VC++ 编译器怎么找到 WinMain 或 wWinMain 函数

使用 wxWdigets 时发现的好玩的事情–VC++ 编译器怎么找到 WinMain 或 wWinMain 函数

在使用 wxWdigets 时,发现 wxIMPLEMENT_APP(MyApp); 这一行代码会被扩展成下面的代码:

extern "C" int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, wxCmdLineArgType lpCmdLine, int nCmdShow) {
   
   
    ; ; return wxEntry(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
} MyApp& wxGetApp() {
   
   
    return *static_cast<MyApp*>(wxApp::GetInstance());
} wxAppConsole* wxCreateApp() {
   
   
    wxAppConsole::CheckBuildOptions("3" "." "2" " (" "wchar_t" ",Visual C++ " "1900" ",STL containers" ",compatible with 3.0" ")", "your program"); return new MyApp;
} wxAppInitializer wxTheAppInitializer((wxAppInitializerFunction)wxCreateApp)

可以看到,入口函数是 WinMain。在我编译完成 wxWidgets 源代码,并且把编译后的库安装到另一个路径后,我的项目已经脱离了 wxWidgets 源代码目录,也就是说我的项目的编译过程,是不被编译 wxWidgets 代码时的目录结构、配置文件影响的。这种情况下,应该是只需要设置好头文件路径、库路径,就可以正常使用 wxWidgets 了。

然而,意想不到的事情发生了。同一代码,wxWdigets 构建目录中的 Demo bombs 可以编译并且链接成功,在我的项目目录里就不能链接成功,错误原因如下:

LIBCMTD.lib(exe_wwinmain.obj) : error LNK2019: 无法解析的外部符号 wWinMain,函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中引用了该符号

没有找到 wWinMain。当然不会找到,因为 wxWidgets 定义的入口点是 WinMain。可是,为什么 bombs 可以成功链接呢?经过一些研究发现,把 bombs 所属的解决方䅁里的其它项目全部移除;把 bombs 这个项目里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dowhileprogramming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值