aardio - 调用C编写的dll时的不同参数类型处理方法

2024-01-27 10:52

本文主要是介绍aardio - 调用C编写的dll时的不同参数类型处理方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

import console; 
//生成 DLL 
import tcc; 
var c = tcc();
c.code = /** 
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>#ifdef __cplusplus
#define EXTERN_C extern "C" __declspec(dllexport)
#else
#define EXTERN_C __declspec(dllexport)
#endif#define _CDECL __cdecl
#define _STDCALL __stdcallstruct testStruct 
{int a;int b;float c;double d;long long f;short g;
};EXTERN_C   void _CDECL test_one(struct testStruct p)
{printf("%d\n", p.a);printf("%d\n", p.b);printf("%f\n", p.c);printf("%lf\n", p.d);printf("%lld\n", p.f);printf("%d\n", p.g);
}EXTERN_C   void _CDECL test_two(int a ,int b,float c,double d,long long f,short g)
{printf("%d\n", a);printf("%d\n", b);printf("%f\n", c);printf("%lf\n", d);printf("%lld\n", f);printf("%d\n", g);
}EXTERN_C void _CDECL test_three(struct testStruct *p)
{printf("%d\n", p->a);printf("%d\n", p->b);printf("%f\n", p->c);printf("%lf\n", p->d);printf("%lld\n", p->f);printf("%d\n", p->g);p->g = 65;
}int main()
{return 0;
}
**/
c.output( "d:/bin.dll" ) //编译C源码,生成DLL
c.close(); //收工console.open()
var dll = raw.loadDll("d:/bin.dll",,"cdecl");
console.log("第一种方式:")
dll.test_one(100,200,raw.float(33.3),0,raw.double(99.2),raw.long(30000000),raw.word(97));console.log('\n第二种方式:')
dll.test_two(100,200,raw.float(33.3),raw.double(99.2),raw.long(30000000),raw.word(97));console.log('\n第三种方式:')
var testStruct = {int a=100;int b=200;float c=33.3;double d=99.2;long f=30000000;word g=97;
};
dll.test_three(testStruct);console.log('\n第三种方式运行后成员g的值被修改:')
console.dump(testStruct)console.pause(true);

这篇关于aardio - 调用C编写的dll时的不同参数类型处理方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/650017

相关文章

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

游戏闪退弹窗提示找不到storm.dll文件怎么办? Stormdll文件损坏修复技巧

《游戏闪退弹窗提示找不到storm.dll文件怎么办?Stormdll文件损坏修复技巧》DLL文件丢失或损坏会导致软件无法正常运行,例如我们在电脑上运行软件或游戏时会得到以下提示:storm.dll... 很多玩家在打开游戏时,突然弹出“找不到storm.dll文件”的提示框,随后游戏直接闪退,这通常是由于