将WinMain入口点嵌入到类中
Embedding WinMain entrypoint into a class?
我想知道,是否有可能使用win32程序的入口点- WinMain -作为类方法?例如,
class cApp {
public:
cApp();
~cApp();
cGuiManager* guiManager;
cServerManager* serverManager;
cAudioManager* audioManager;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hInst, LPSTR lpCmdLine, int nCmdShow);
static LRESULT CALLBACK WndProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam);
};
谢谢!
No。WinMain
不能作为类的成员作为程序的"入口"点。因此,WinMain
不能在任何命名空间中(除了全局命名空间)。例如,即使user::WinMain
如下所示, 也不能作为程序的"入口"点。
namespace user
{
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int );
}
程序的入口点必须是全局命名空间中定义的。
但是,您可以在类(或其他名称空间)中使用此名称的函数,您可以从全局名称空间中定义的实际入口点WinMain
调用该函数。但是cApp::WinMain
(或user::WinMain
)绝不是程序的"入口"点。
首先,它(和WndProc)需要是static
成员来匹配所需的原型。真正的问题是让编译器绑定到一个非全局函数,因为你需要使用一个链接器选项,如msvc的/entry:<symbol>
来尝试绑定到静态类成员,但是它可能会在作用域解析上出错……如果你不能有静态成员,你可以使用CRT winmain条目来创建你的对象的实例,然后调用它的WinMain
成员函数,否则你可能无法直接绑定到标准库,你需要自己做CRT初始化(尽管可以从CRT msvc源中获取)
相关文章:
- Visual Studio Code "undefined reference to `WinMain@16'"
- 修改程序的入口点时未调用全局变量的构造函数
- "未定义对'WinMain@16'的引用"gcc 编辑器中的错误
- 我无法弄清楚"对Winmain@16错误的未定义引用"
- Windows 是否可以调用静态库中的 WinMain 函数C++
- 函数声明中的 WINAPI 标识符C++ DLL 入口点函数中的标识符
- 链接器错误:切换到unicode生成给出:未解析的外部符号WinMain
- 如何更改 c++ 文件的 mach-o 可执行文件的入口点?
- 如何使用CMake在Windows上将应用程序入口点设置为main()C++?
- 对WinMain(C++ MinGW)的未定义引用
- SWIG c++ 到 C# 错误找不到入口点SWIGRegisterExceptionCallbacks_xxxx
- C++可执行文件继续寻找序号入口点
- 如何在不指定 C++ 中的所有参数的情况下声明程序的 main() 入口点
- 代码问题.使用矢量删除相同的数字,除了它的最后一个入口
- QDIR入口列表可以使用文件夹快捷方式透明地工作
- Bluez5:入口配对完成时的事件
- C++ minGW 找不到过程入口点
- 控制台仍然显示WinMain入口点在c++中使用Netbeans
- 没有WinMain的winapi入口点
- 将WinMain入口点嵌入到类中