首页 > TAG信息列表 > stdcall

lua 通过alien调用 AutoHotkey.dll

lua 调用 AutoHotkey.dll require( "alien")local ahkh = alien.load "H:/B_SoftWare/Python_Java/AutoHotkey+anaconda/ahk/ahk,ahkdll/ahkdll-v1-release-master (1)/ahkdll-v1-release-master/Win32a/AutoHotkey.dll" ahkh.ahkReady:types{ret='int

函数调用约定

目录 一、函数调用约定的作用 二、stdcall 三 、cdecal 四、fastcall 一、函数调用约定的作用 函数调用是由栈这种存储结构来实现的,但是这里面涉及几个问题,比如下面的函数: int add(int a, int b) { return a + b; } int main { add(1, 2); return; } (1)参数的入栈顺

delphi 向 TEdgeBrowser 组件中写入 Cookie 的方法

用执行 js 来设置 cookie 已经无效,接口 ICoreWebView2_2 才有操作 cookie 接口 , 新接口要用 WebView2.tlb 文件来生成。 以下为已经生成好的单元文件 unit WebView2_TLB; // ************************************************************************ // // WARNING

回顾C++回调函数

记得当初学习C++的时候,老师就说,回调函数是我们自己定义,系统自动调用的函数。看起来好神秘哦,它到底是怎么实现自动调用的呢,看了下面的介绍,明白其原理后,也觉得没有什么了不起的。 在介绍回调函数之前,要知道什么是函数指针。 我们知道函数放在内存的代码区域内,它们同样有地址,它

C++ COM编程-什么是接口

1. 什么是接口说到COM,就不得不说接口了;在进行COM开发的过程中,可以说,一直都在和各种各样的接口打交道。那接口是什么?对于COM来说,接口是一个包含一个函数指针数组的内存结构,每一个数组元素包含的是一个由组件所实现的函数的地址;所以,对于COM,接口就是这样的一个内存结构,其它东西都是一

复杂的结构化存取(一)

   复杂的结构化存取(一)    之所以说复杂, 就是区别与以前谈到的 结构化文件存取; 这种复杂的结构化文件也有叫做"复合文档".有些文档不是结构化的, 譬如记事本文件; 结构化的档可以分为以下几类:标准结构化文档、自定义结构化文档(譬如 bmp 文件)和复合文档.这里要谈到的

多线程编程(7) - 从 CreateThread 说起[续五]

多线程编程(7) - 从 CreateThread 说起[续五] function CreateThread( lpThreadAttributes: Pointer; {安全设置} dwStackSize: DWORD; lpStartAddress: TFNThreadStartRoutine; lpParameter: Pointer; dwCreationFlags: DWORD; var lpThreadId: DWORD ): TH

调试错误 由于函数的调用约定造成的错误

当你在调试中遇到 Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling conventi

函数调用约定

函数调用约定:是对函数调用时如何传递参数的一种约定。 调用函数前要先把参数压入栈然后再传递给函数,栈就是定义在进程中的一段内存空间, 其大小被记录在PE头中,进程运行时确定栈内存的大小(与malloc/new动态分配内存不同) 函数执行完成后,栈中的参数不用处理 因为只是临时存储在

C++ 调用约定

__cdecl,__stdcall(WINAPI),__fastcall 的区别 (1) __cdecl:C/C++默认方式,参数从右向左入栈,主调函数负责栈平衡。 (2) __stdcall:windows API默认方式,参数从右向左入栈,被调函数负责栈平衡。 (3) __fastcall:快速调用方式。数优先从寄存器传入(ECX和EDX),剩下的参数再从右向左从栈传

__stdcall,__cdecl,__pascal,__fastcall的区别

__cdecl __cdecl 是 C Declaration 的缩写,表示 C 语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。 __stdcall __stdcall

Delphi stdCall意义

1、此代码所在单元是个库,可被别的应用来调用,像SysUtils、DateUtils、Classes等单元一样,都是为将来的无穷无尽的应用提供服务的。 2、此代码还可能出现在library的工程中,即动态链接库(.dll文件),最后会有export HInitRSCCTL的语句,这样,别的应用程序就能动态链接该库,并调用该函数。相

lazarus 使用微软detour库 delphi

导出函数供lazarus使用function DetourAttach( ppPtr:DWORD;pDetour:DWORD):DWORD;stdcall; external 'mydetour' name 'DetourAttach'; function DetourTransactionBegin():DWORD;stdcall; external 'mydetour' name 'DetourTransactionBegin�

jna StdCallCallback 回调问题查证

1、jna 调用公司动态库老退出 退出码是0xc0000409,网上查是 溢出,于是编一个debug模式动态库来调试 2、     报这个错,网上查 与回调函数的调用约定方式有关 也就是__stdcall  __declspec 看 dll 代码,导出函数都是 __declspec,回调函数是__stdcall   功夫不负有心人 终于找到回调

__stdcall、__fastcall,__cdecl的差别

_stdcall 是StandardCall的缩写,是C++的标准调用方式:所有参数从右到左依次入栈,如果是调用类成员的话,最后一个入栈的是this指针。这些堆栈中的参数由被调用的函数在返回后清除,使用的指令是 retnX,X表示参数占用的字节数,CPU在ret之后自动弹出X个字节的堆栈空间。称为自动清栈。函数在

ctypes使用

ctypes是python的兼容库, 提供c的数据类型兼容,可方便调用c动态库接口c动态库在linux下为so,windows下为dll  ctypes模块中有三种不同的动态链接库加载方式:cdll, windll, oledll。不同之处在于链接库中的函数所遵从的函数调用方式(calling convention)以及返回方式有所不同。    cdl

关于 _stdcall

c语言默认函数调用方式是cdecl,如果想使用stdcall的调用方式,需要使用_stdcall关键字 stdcall和cdecl的差异主要是栈的整理方式不一样 Stdcall是被调用函数自己整理 cdecl是调用函数整理栈区

__stdcall修饰符

被这个关键字修饰的函数,其参数都是从右向左通过堆栈传递的(__fastcall 的前面部分由ecx,edx传)。 函数调用在返回前要由被调用者清理堆栈。   扩展: 1、修饰名(Decoration name) “C”或者“C++”函数在内部(编译和链接)通过修饰名识别。 修饰名是编译器在编译函数定义或者原型时生

Delphi 调用惯例 register, pascal, cdecl, stdcall, safecall 介绍

说明:调用惯例,是一个参数传递标准。大家都按这个惯例来使用参数就不会出现出错(例如DLL)。 常见的调用惯例有register, pascal, cdecl, stdcall, safecall。函数的调用管理决定了参数如何传递给子过程,并从堆栈中退出,以及寄存器在参数传递中的使用,错误和异常的处理。Delphi中默认

stdcall;far;external

function _CreateMutex(lpMutexAttributes: PSecurityAttributes;   bInitialOwner: Integer; lpName: PChar): THandle; stdcall; external kernel32 name 'CreateMutexA'; 这个怎么理解 答案: function auto_init(port: smallint;baud:longint): longint; stdca

静态链接库、动态链接库

1.代码的重用 一般在程序中,代码重用可以用函数来实现; 给其它程序重用代码的实现有两种方式:     1】静态链接库     2】动态链接库 也就是可以用来实现模块化;   1.静态链接库 1)创建静态链接库 vc6中创建:File    ->new    ->Projects    ->Win32 Static Library   头文

转载的透视降压

H 头文件 #ifndef __Cmd_Api__ #define __Cmd_Api__ #define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的信息 #include <windows.h> #include <stdio.h> #define CN_PUB_Server_Ip "127.0.0.1" #define CN_PUB_Server_Port 36868 #defin

WINAPI

title: WIN API 计时 获取时钟频率=》获取2次计数差=》用时 QueryPerformanceFrequency() - 基本介绍 类型:Win32API 原型:BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency); 作用:返回硬件支持的高精度计数器的频率。 返回值:非零,硬件支持高精度计数器;零,硬

c – 是否可以在__stdcall中输出导出的函数并且名称为unmangled?

我正在开发一个项目来生成用于离线测试的虚拟DLL.我们有真正的DLL及其头文件,虽然它们似乎不兼容. DLL中的名称是未解码的,但函数转发声明声明被称为__stdcall: example.h文件 DWORD __stdcall DoSomething(byte aByte); Dependency Walker中的example.dll: 2 (0x0002) 2 (0x000

BCB编写DLL终极手册

一. 编写 DLL File/New/Dll 生成 Dll 的向导,然后能够添加导出函数和导出类 导出函数:extern "C" __declspec(dllexport) ExportType FunctionName(Parameter) 导出类:class __declspec(dllexport) ExportType ClassName{...} 例子:(说明:只是生成了一个 DLL.dll )   #include "DllFor