需要复用 aardio 调用 vs 编写的dll (cdecl方式和stdcall方式)_qq_31683775的博客-CSDN博客 文章 stdcall方式 生成的.lib和.dll 文件 ,以及工程中的.h文件
新建 vs 工程
删除自动生成的示例发放,添加fadd方法的声明和实现
复制 .lib和.dll 文件 .h文件 到工程目录
将 vs 工程 默认的cdecl方式改为stdcall方式
右键工程 -> 属性 ->
右键工程 -> 新建项 编辑新建的文件
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工程
复制
dll文件夹到.exe同级目录
运行exe
dll与dll相互调用的时候,注意不能混合调用,也就是
cdecl方式的dll不能调用stdcall方式的dll
stdcall方式的dll不能调用cdecl方式的dll