stdcall相关内容
我有这个代码: void GetResult(WINUSB_INTERFACE_HANDLE InterfaceHandle, LPOVERLAPPED lpOverlapped){DWORD 字节数 = 0;WinUsb_GetOverlappedResult(接口句柄,lp重叠,&numBytes,真的);返回;uint8_t 堆栈[64];} WinUsb_GetOverlappedRe
..
我试图为 dll 导出一个简单的测试函数,以便与指定调用约定的应用程序(仅供参考:mIRC)一起使用: int __stdcall test_func(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) 现在,要从应用程序调用它,我将使用 test_func 但我注意到由于名称修改,它并不像我想象的那么
..
我有一个程序需要为它创建一个 DLL,希望是在 C# 中.该程序是用 Delphi 编写的,我有一个要编码的接口文件.该接口使用 stdcall 调用约定. 能否创建一个符合接口的C#DLL,可以在Delphi应用中使用? 是否有一些示例代码演示了如何将 C# DLL 编码为 stdcall 接口方法? 解决方案 这在纯 C# 中是不可能的,但是 这篇文章 展示了如何将非托管导
..
我有简单的代码.StdCall 是 __stdcall 而 CdeclCall 是 __cdecl. #include int __stdcall StdCall(int a,int b){返回 a + b;}int __cdecl CdeclCall(int a,int b){返回 a + b;}int main(int argc, char **argv) {标准调用(10,20);Cdec
..
有充分的理由吗? 它们的内部函数(未导出)是否也是 stdcall 约定? 解决方案 这是对 32 位代码的 pascal 调用约定的改编.Pascal 是 OS/2 和 Windows 3 等 16 位操作系统的调用约定.为什么选择 pascal 有点猜测,即使我当时还是个小崽子,但它的效率要高一些.当您只需要处理 640 KB 时,这很重要. 大多数 Win32 函数都不是
..
我正在 NASM 的汇编中为 Windows 编程,我在代码中发现了这一点: extern _ExitProcess@4;其余代码...;...调用 _ExitProcess@4 winapi库函数的声明和调用中的@4是什么意思? 解决方案 winapi 使用 __stdcall 调用约定.调用者将所有参数从右到左压入堆栈,被调用者再次弹出它们以清理堆栈,通常使用 RET n 指令.
..
据我所知,只有 caller-clean-stack 约定可以使用可变参数. 顺便说一句,WinApi StringCchPrintfW 是这样声明的.(我删除了 SAL) __inline HRESULT __stdcall StringCchPrintfW( STRSAFE_LPWSTR pszDest、size_t cchDest、STRSAFE_LPCWSTR pszForma
..
typedef bool (*my_function_f)(int, double);typedef bool (__stdcall *my_function_f2)(int, double);//^^^^^^^^^^模板TF函数类;模板类TFunction{typedef R (*func_type)(T0,T1);};int main(){TF
..
我有一个C ++控制台应用程序& DLL.在C ++应用程序中,我看到以下代码片段:: typedef DWORD (WINAPI* functABC)(unsigned long*); functABC functABC111; HMODULE handleDLL = LOadLibrary("a.DLL"); functABC111 = (functABC)GetProcAddress
..
我有一个指向COM接口的指针,想从其虚拟表中获取函数指针并进行方法调用。为此,我需要进行stdcall方法调用。在Go中,如何在cgo中使用约定的stdcall进行呼叫或使用约定的stdcall进行呼叫? 解决方案 请参见“ godoc syscall Proc”,以获取有关如何在Windows中调用stdcall函数的说明。请注意,* Proc.Call确实会分配/释放内存,因此,如果您
..
我正在使用GCC在我自己的内核上工作,并且当从asm代码调用C函数时,我必须自己做add esp,xx.经过一番搜索,我发现stdcall是Microsoft的发明,不能在GCC中使用它.有什么方便的方法可以完成这项工作吗? 解决方案 Linux中的stdcall是否等效? 我在Linux环境中的内核 等等,这是您自己的内核还是Linux内核?因为如果它是您自己的内核,那么
..
我知道__stdcall函数不能有省略号,但是我想确保除__cdecl或__stdcall之外,没有平台支持stdarg.h函数来调用约定. 解决方案 调用约定必须是调用者从堆栈中清除参数的一种约定(因为被调用者不知道将传递什么). 尽管不一定与Microsoft所说的"__cdecl"相对应.举例来说,在SPARC上,它通常会在寄存器中传递参数,因为这是SPARC设计的工作方式-如
..
我正在dll中编写一些插件代码,该dll由我无法控制的主机调用. 主机假定插件已导出为__stdcall函数.会告知主机函数的名称和所需参数的详细信息,并通过LoadLibrary,GetProcAddress动态填充对它的调用,然后手动将参数推入堆栈. 通常,插件dll会公开一个恒定的接口.我的插件公开了一个在dll加载时配置的接口.为此,我的插件提供了一组在编译dll时定义的标准入
..
我创建了一个DLL文件,其中包含下面的两个空函数. extern "C" __declspec(dllexport) void __stdcall myFunc1() { // just empty function } extern "C" __declspec(dllexport) void __cdecl myFunc2() { // just empty funct
..
我声明了一些C ++函数的原型,如下所示: extern "C" void __stdcall function(); 我也有一些第三方的dll,并且导出了function()-根本没有名称修饰. 由于MinGW的stdcall @ -suffix,由于undefined reference to function@...,我无法构建我的exe或dll.我该如何在没有@ ...的情况下获
..
我有一个dll导出 extern“C”__ declspec(dllexport)int __stdcall Foo(void); dll的转储显示 ***************************************** ************************************* 栏目:出口 档案抵消:00001400(5120)
..
我有这样的代码: void GetResult(WINUSB_INTERFACE_HANDLE InterfaceHandle,LPOVERLAPPED lpOverlapped) { DWORD numBytes = 0; WinUsb_GetOverlappedResult( InterfaceHandle, lpOverlapped, & numBytes, TRUE
..
这段代码编译(如我所料): typedef void __stdcall(* Func)(); struct A { static void __stdcall f(){} }; int main(){ Func p = A :: f; } 但是这一个: struct A { typedef void __stdcall(* Func)(
..
我有一个程序,我需要创建一个DLL,希望在C#中。该程序是用Delphi编写的,我有一个接口文件来编写。该界面使用stdcall调用约定。 是否可以创建符合该接口的C#DLL,可以在Delphi应用程序中使用? 有没有一些示例代码演示如何将C#DLL编码为stdcall接口方法? 解决方案 这是不可能在纯C#,但这是一篇文章,它展示了如何将非托管导出表添加到C#库中,然后可以使
..
我尝试将Windows应用程式移至Linux。此应用程序使用 __ stdcall 属性标记一些函数。然而,我被一个朋友告诉stdcall只使用在windows和没有意义在linux(但DOES存在于Windows GCC)。 我试图搜索Google,并得到一些结果,在Linux中有stdacll。 因此... $此外,对于GCC,我看到2个实现: __属性__((__ stdcall _
..