直接调用会弹出堆栈错误的信息,原因是VS默认是__cdcel方式,而易语言是__stdcall,所以调用约定不一致导致堆栈错误。

解决方案很简单,易语言声明DLL函数时“在库中对应命令名”函数名前加一个“@”符号即可。

简单测试一下:

头文件:

1 #pragma once
2 #include <Windows.h>
3 
4 
5 extern "C" __declspec(dllexport) int add1(int a, int b);

CPP文件:

1 #include "dll1.h"
2 
3 int add1(int a, int b)
4 {
5     return a + b;
6 }

编译后,易语言调用一下子

java调用易语言dll 易语言调用c语言编写的dll_java调用易语言dll

结果如下,不会弹出堆栈错误了:

java调用易语言dll 易语言调用c语言编写的dll_堆栈_02

 

个人比较喜欢易语言,因为是我编程入门的语言,更喜欢它的中文编码、简洁、方便,加上各路大佬开源的模块:如精易模块、超级模块,用起来就更加方便了,对我而言不亚于当今很火的Python了。

不知道为啥Python的模块会那么多,如果易语言的开源模块也那么多就更好了,这样的话感觉易语言会在这代年青人程序员迅速火爆中国!