- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我如何从 java 中调用此方法:
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
是否可以从 java 调用 WinMain ?我希望该函数中的参数值与直接运行 C++ 程序时的值相同。我想链接一个 .dll
,其入口点是这个函数。
最佳答案
出于多种原因,这是个坏主意。
WinMain
很特别像 main
或 DllMain
一样,这些函数比看起来要多得多。
与天真的方法相反,WinMain
不是堆栈上的“第一个”函数。这是代码开发人员可编写的第一个函数。但是,如果您进行调试,您会发现 WinMain
前后发生了很多事情。
其中,C++全局对象的构造/析构,函数注册于atexit
C API 等,但您可以确定那里发生了很多特定于 Windows 平台的事情。
那么,如果它是一个 WinMain
,那么您内部某处可能有一个消息循环。它很可能会干扰您自己的应用程序(您的 Java 应用程序是 GUI 应用程序吗?)
你会给 WinMain
什么参数值?
第一个 HINSTANCE 参数非常重要,您尝试启动的可执行文件的代码可能会用到它。您不能只提供一些随机值并期望它起作用。您可以检索 Java 进程的 HINSTANCE,但我怀疑您不喜欢这个结果。
假设您成功调用了程序的 WinMain。这个程序会期望一些东西在那里(参见 WinMain
is special 部分)。其中,GetCommandLine()
API 函数的结果,可以在您的 C++ 程序中使用。
Is it possible to call WinMain from java ? I want the value of the arguments in that function be same as when directly running a c++ program. I want to link a .dll whose entry point be this function
您是否正在尝试“启动”一个入口点为 WinMain 的 DLL?估计是哪里出了问题。 WinMain
或 main
是 Windows 上进程的标准入口点,而不是 DLL。 DLL 入口点通常是具有不同原型(prototype)的 DllMain
。
我不知道为什么您需要在与 Java 启动器相同的进程中启动可执行文件,但我相信您做错了什么。
关于java - 从 Java : Possible ? 调用 WinMain 还有其他方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10798559/
WinMain() 实际上是如何调用的?我记得专业黑客使用的一个函数,它以(某物)开头,看起来像 __startupWinMain()。 问题是,我有一个 Win32 EXE(使用 /SUBSYSTE
WinMain 的第三个参数以未处理的字符串形式提供命令行。虽然这对于允许您处理通配符的扩展和其他问题可能很有用,但是否有可能在 Win32 API 中的某个地方潜伏着获得通常的 C argc、arg
所以我有一个 .cpp 文件,其中包含例如函数:drawLine()、drawSquare() 和 main()。在 main() 中,我想调用使用 WinApi 创建窗口的函数(从其他文件),然后调
我刚开始学习使用 C++ 进行 Windows 编程。我有一个疯狂的印象,即 win32 编程是基于调用 Windows 函数并向它们发送参数以及从它们发送参数。就像,当你想创建窗口时,你调用一些处理
我的问题是参数只检索每个参数中的第一个字母,为此我不知道为什么..有人可以详细说明吗? #include #include int WINAPI WinMain(HINSTANCE hInstan
这个问题在这里已经有了答案: what does the function returns with in C program , in case if there is no return sta
总而言之,我有一个关于 WinMain 的问题。在VS2010中,_tWinMain的返回值为“(int) msg.wParam”。我不明白为什么它会返回 wParam。 wParam 是什么?我
我正在努力让我的代码尽可能完美,并且我已经清除了所有错误和(其他)警告。我只剩下这两个: Warning C28253 Inconsistent annotation for 'WinMain':
我刚开始使用 C++,但遇到了无法修复的错误。 这是我到目前为止的所有代码(甚至无法让 hello world 工作): #include "stdafx.h" #include int WINAP
这可能是有史以来最简单的win32程序.. #include int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR cmdLine,
我有几个非常简单的问题。我在网上搜索了它们,但找到了不同的答案,所以我只想知道该遵循哪个。 所以,首先,我相信 WinMain 不是 C 或 C++ 标准,而只是由 Microsoft 添加来确定何时
你能给我解释一下通常写在 WinMain() 函数末尾的这条语句的意义吗: return (int) msg.wParam; 我习惯于以 return 0; 结束我的控制台应用程序,这对 Win
假设我在一个项目中构建了一个名为 App1 的应用程序,其中包含很多类。我决定要构建另一个名为 App2 的项目,并且我想使用那些相同的类,因此我决定将 App1 转换为一个 lib 文件。我必须删除
我正在 Windows 上开发应用程序,但我也想支持其他平台(我编写的大部分代码都是平台无关的)。不管怎样,我想为了开发的缘故我想让事情简单化(也许我在这种方法上太天真了)所以我的 main.cpp
有什么方法可以在类中隐藏 WinMain() 函数吗?谢谢。 最佳答案 不,没有。一个更好的问题是“你为什么想要”?在 Java 或 C# 中,main 函数是静态类成员,不是因为它更好或更干净,而是
我在想,是否可以使用 win32 程序的入口点 - WinMain - 作为类方法?例如; class cApp { public: cApp(); ~cApp(); cGuiM
我正在学习 C++ 和针对 Windows API 的编程。我的第一个“Hello Windows API”程序只显示一个 MessageBox()。但是,我有一些问题,我正在阅读的书没有解释。 首先
为什么这个程序可以正确显示消息框,但没有设置错误级别? int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTAN
在MFC中,wWinMain定义在appmodul.cpp中。据我所知,该文件内置于 mfc90ud.dll 中。但是,当我运行我的应用程序时,调用堆栈显示 MyApplication.exe!wWi
我删除了 IDE 生成的 _tmain() 方法,因为我发现在添加我的 WinMain 条目后有两个入口点没有意义。是的,这是我的第一个 C++ 应用程序,我是新手,但请保持友好。 这就是我得到的:
我是一名优秀的程序员,十分优秀!