stdcall相关内容

使用 extern c 和 dllexport 与模块定义 (msvc++) 进行 stdcall 名称修改

我试图为 dll 导出一个简单的测试函数,以便与指定调用约定的应用程序(仅供参考:mIRC)一起使用: int __stdcall test_func(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) 现在,要从应用程序调用它,我将使用 test_func 但我注意到由于名称修改,它并不像我想象的那么 ..
发布时间:2021-12-22 18:51:48 C/C++开发

创建可以使用 stdcall 在 Delphi 应用程序中导入的 C# DLL - 可能吗?

我有一个程序需要为它创建一个 DLL,希望是在 C# 中.该程序是用 Delphi 编写的,我有一个要编码的接口文件.该接口使用 stdcall 调用约定. 能否创建一个符合接口的C#DLL,可以在Delphi应用中使用? 是否有一些示例代码演示了如何将 C# DLL 编码为 stdcall 接口方法? 解决方案 这在纯 C# 中是不可能的,但是 这篇文章 展示了如何将非托管导 ..
发布时间:2021-12-14 00:08:06 C#/.NET

为什么微软选择 stdcall 作为他们的 API 约定?

有充分的理由吗? 它们的内部函数(未导出)是否也是 stdcall 约定? 解决方案 这是对 32 位代码的 pascal 调用约定的改编.Pascal 是 OS/2 和 Windows 3 等 16 位操作系统的调用约定.为什么选择 pascal 有点猜测,即使我当时还是个小崽子,但它的效率要高一些.当您只需要处理 640 KB 时,这很重要. 大多数 Win32 函数都不是 ..
发布时间:2021-09-25 18:53:42 其他开发

Windows 函数名称后跟@数字符号?

我正在 NASM 的汇编中为 Windows 编程,我在代码中发现了这一点: extern _ExitProcess@4;其余代码...;...调用 _ExitProcess@4 winapi库函数的声明和调用中的@4是什么意思? 解决方案 winapi 使用 __stdcall 调用约定.调用者将所有参数从右到左压入堆栈,被调用者再次弹出它们以清理堆栈,通常使用 RET n 指令. ..
发布时间:2021-09-25 18:36:08 其他开发

如何从Go进行stdcall

我有一个指向COM接口的指针,想从其虚拟表中获取函数指针并进行方法调用。为此,我需要进行stdcall方法调用。在Go中,如何在cgo中使用约定的stdcall进行呼叫或使用约定的stdcall进行呼叫? 解决方案 请参见“ godoc syscall Proc”,以获取有关如何在Windows中调用stdcall函数的说明。请注意,* Proc.Call确实会分配/释放内存,因此,如果您 ..
发布时间:2020-10-05 21:17:23 其他开发

在GCC中,stdcall是否有等效功能?

我正在使用GCC在我自己的内核上工作,并且当从asm代码调用C函数时,我必须自己做add esp,xx.经过一番搜索,我发现stdcall是Microsoft的发明,不能在GCC中使用它.有什么方便的方法可以完成这项工作吗? 解决方案 Linux中的stdcall是否等效? 我在Linux环境中的内核 等等,这是您自己的内核还是Linux内核?因为如果它是您自己的内核,那么 ..
发布时间:2020-09-12 22:25:25 其他开发

在C ++中,可变参数函数(那些在参数列表末尾带有...的函数)是否必须遵循__cdecl调用约定?

我知道__stdcall函数不能有省略号,但是我想确保除__cdecl或__stdcall之外,没有平台支持stdarg.h函数来调用约定. 解决方案 调用约定必须是调用者从堆栈中清除参数的一种约定(因为被调用者不知道将传递什么). 尽管不一定与Microsoft所说的"__cdecl"相对应.举例来说,在SPARC上,它通常会在寄存器中传递参数,因为这是SPARC设计的工作方式-如 ..
发布时间:2020-07-19 19:36:25 C/C++开发

在Visual Studio中使用自定义的序言和Epilog代码编写裸函数

我正在dll中编写一些插件代码,该dll由我无法控制的主机调用. 主机假定插件已导出为__stdcall函数.会告知主机函数的名称和所需参数的详细信息,并通过LoadLibrary,GetProcAddress动态填充对它的调用,然后手动将参数推入堆栈. 通常,插件dll会公开一个恒定的接口.我的插件公开了一个在dll加载时配置的接口.为此,我的插件提供了一组在编译dll时定义的标准入 ..

mingw32 g ++和stdcall @后缀

我声明了一些C ++函数的原型,如下所示: extern "C" void __stdcall function(); 我也有一些第三方的dll,并且导出了function()-根本没有名称修饰. 由于MinGW的stdcall @ -suffix,由于undefined reference to function@...,我无法构建我的exe或dll.我该如何在没有@ ...的情况下获 ..
发布时间:2020-05-01 03:48:22 C/C++开发

__stdcall typedef g ++问题

这段代码编译(如我所料): typedef void __stdcall(* Func)(); struct A { static void __stdcall f(){} }; int main(){ Func p = A :: f; } 但是这一个: struct A { typedef void __stdcall(* Func)( ..
发布时间:2018-04-18 20:55:22 C/C++开发

创建可以使用stdcall在Delphi应用程序中导入的C#DLL - 可能?

我有一个程序,我需要创建一个DLL,希望在C#中。该程序是用Delphi编写的,我有一个接口文件来编写。该界面使用stdcall调用约定。 是否可以创建符合该接口的C#DLL,可以在Delphi应用程序中使用? 有没有一些示例代码演示如何将C#DLL编码为stdcall接口方法? 解决方案 这是不可能在纯C#,但这是一篇文章,它展示了如何将非托管导出表添加到C#库中,然后可以使 ..
发布时间:2017-04-23 13:40:47 C#/.NET

在Linux中有STDCALL吗?

我尝试将Windows应用程式移至Linux。此应用程序使用 __ stdcall 属性标记一些函数。然而,我被一个朋友告诉stdcall只使用在windows和没有意义在linux(但DOES存在于Windows GCC)。 我试图搜索Google,并得到一些结果,在Linux中有stdacll。 因此... $此外,对于GCC,我看到2个实现: __属性__((__ stdcall _ ..
发布时间:2016-10-22 18:36:24 服务器开发