aardio 调用 vs 编写的dll (stdcall方式) (dll又调用另一个dll)

需要复用 aardio 调用 vs 编写的dll (cdecl方式和stdcall方式)_qq_31683775的博客-CSDN博客 文章 stdcall方式 生成的.lib和.dll 文件 ,以及工程中的.h文件

aardio 调用 vs 编写的dll (stdcall方式) (dll又调用另一个dll)_第1张图片

 aardio 调用 vs 编写的dll (stdcall方式) (dll又调用另一个dll)_第2张图片

 新建 vs 工程 aardio 调用 vs 编写的dll (stdcall方式) (dll又调用另一个dll)_第3张图片

 删除自动生成的示例发放,添加fadd方法的声明和实现

aardio 调用 vs 编写的dll (stdcall方式) (dll又调用另一个dll)_第4张图片

 aardio 调用 vs 编写的dll (stdcall方式) (dll又调用另一个dll)_第5张图片

 复制 .lib和.dll 文件 .h文件 到工程目录

aardio 调用 vs 编写的dll (stdcall方式) (dll又调用另一个dll)_第6张图片

 将 vs 工程 默认的cdecl方式改为stdcall方式 

右键工程 -> 属性 -> aardio 调用 vs 编写的dll (stdcall方式) (dll又调用另一个dll)_第7张图片

右键工程 -> 新建项 aardio 调用 vs 编写的dll (stdcall方式) (dll又调用另一个dll)_第8张图片 编辑新建的文件

LIBRARY "INCLUDEDLLTEST"
EXPORTS
fadd

其中第一行指定最终生成的dll的文件名,不带.dll后缀

第二行为关键词

第三行及以下指定导出的方法名

生成dll

新建aardio 控制台工程

将本次生成的dll文件和本次dll 依赖的dll文件都复制到 aardio工程的dll文件夹

 调用dll

import console;
console.setTitle("aardio工程2");

/*
启动参数键值对前导字符可以为 / 或 - ,前导字符可重复多次。
键值对可以空格分开,也可用等号分开,例如: "/opt test" "-opt test" "--opt test" 或 "/opt=test"
*/
if(_ARGV.opt == "test"){
	console.dump(_ARGV.opt,_ARGV[#_ARGV]) //_ARGV 既包含命名参数组成的键值对,也包含按参数顺序组成的数组
}

var str = console.getText("请输入一行文本,然后回车:");
console.log("您输入的是" ,str );
 

var dll=raw.loadDll("\dll\INCLUDEDLLTEST.dll",,"stdcall")


var int1 = dll.fadd();
 
console.log(int1);
 
console.pause();

运行

aardio 调用 vs 编写的dll (stdcall方式) (dll又调用另一个dll)_第9张图片

打包生成aardio工程

aardio 调用 vs 编写的dll (stdcall方式) (dll又调用另一个dll)_第10张图片

复制

dll文件夹到.exe同级目录

运行exe

 aardio 调用 vs 编写的dll (stdcall方式) (dll又调用另一个dll)_第11张图片

dll与dll相互调用的时候,注意不能混合调用,也就是

cdecl方式的dll不能调用stdcall方式的dll

stdcall​​​​​​​方式的dll不能调用cdecl方式的dll

你可能感兴趣的:(aardio,windows)