最近ChatGPT很火 很多朋友想用ChatGPT写易语言的程序 后来发现GPT不支持易语言代码的编写(或者说是易语言代码不被GPT支持)但有些同学想到了易语言可以调用DLL来进行操作
对于不熟悉C++的DLL开发的同学来说 直接用GPT来写DLL是比较困难的
其实GPT写的并没有错 只是易语言DLL的调用方式特殊
以下是一个用GPT写的可以用易语言运行的DLL示例代码:
[C++] 纯文本查看 复制代码 #include <windows.h>
extern "C" __declspec(dllexport) char* create(char* promat) {
int n = strlen(promat);
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (promat[j] > promat[j+1]) {
char temp = promat[j];
promat[j] = promat[j+1];
promat[j+1] = temp;
}
}
}
return promat;
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
switch (ul_reason_for_call) {
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
[backcolor=rgba(255, 255, 255, 0.6)]它使用C语言声明并且把string类型换为char*。它包含一个名为“create”的函数,该函数接受一个char*类型的参数“promat”,并使用冒泡排序返回排序后的内容
这段代码是可以正常被易语言调用的 其实在之前我也研究了一下易语言调用DLL的方式
首先DLL需要用C语言声明的方式
如果参数或者返回值类型需要字符串(string) 那么需要使用char*而不是string(易语言的特殊性)
其次 易语言和C++之间的调用可能会出现一些问题,例如调用约定不一致导致堆栈错误 可以使用”__stdcal"关键字修饰函数或者在易语言声明DLL函数时,在库中对应命令名函数名前加一个“@"符号
最后 DLL必须用x86来编译 比如VS中上方将Debug改为Release,x64改为x86
建议:使用newbing或者github上的copilot来写 准确率高一点 GPT4也可以 不建议使用谷歌的bardai 和GPT3.5 turbo 准确率极低
|