php调用易语言的dll文件,【PHP】真正意义上的PHP调用易语言DLL
[C] 纯文本查看 复制代码PHP_FUNCTION(EDLL)
{
char *DLL_Name = NULL, *function = NULL, *arg_1 = NULL, *arg_2 = NULL;
int Len[4];
size_t len;
zend_string *strg;
int args = ZEND_NUM_ARGS();
if (args == 1) {
if (zend_parse_parameters(args, "s", &DLL_Name, &Len[0]) == FAILURE) {
return;
}
strg = strpprintf(0, "抱歉,请输入动态链接库 %s 函数名称", DLL_Name);
RETURN_STR(strg);
return;
}
else if (args == 2) {
if (zend_parse_parameters(args, "ss", &DLL_Name, &Len[0], &function, &Len[1]) == FAILURE) {
return;
}
}
else if (args == 3) {
if (zend_parse_parameters(args, "sss", &DLL_Name, &Len[0], &function, &Len[1], &arg_1, &Len[2]) == FAILURE) {
return;
}
}
else {
strg = strpprintf(0, "抱歉,参数输入过多");
RETURN_STR(strg);
return;
}
HMODULE hLoad;
hLoad = LoadLibraryA(DLL_Name);//这里打开第一个参数传进来的DLL名称
if (hLoad == NULL)
{
strg = strpprintf(0, "抱歉,无法载入动态链接库[%s]", DLL_Name);
}
else {
if (args - 2 == 0) {
typedef char *(__stdcall *lpAddFun)(); //没有参数
lpAddFun addFun; //函数指针
addFun = (lpAddFun)GetProcAddress(hLoad, function);//
if (addFun != NULL) {
strg = strpprintf(0, "%s", addFun());
}
else {
strg = strpprintf(0, "无效方法 %s", function);
}
}
else if (args - 2 == 1) {
typedef char *(__stdcall *lpAddFun)(char[]); //一个参数
lpAddFun addFun; //函数指针
addFun = (lpAddFun)GetProcAddress(hLoad, function);
if (addFun != NULL) {
strg = strpprintf(0, "%s", addFun(arg_1));
}
else {
strg = strpprintf(0, "无效方法 %s", function);
}
}
else {
strg = strpprintf(0, "参数错误");
RETURN_STR(strg);
return;
}
}
RETURN_STR(strg);
}
php调用易语言的dll文件,【PHP】真正意义上的PHP调用易语言DLL相关推荐
- C#【必备技能篇】VS2019 使用C/C++ 生成DLL 文件,并用 C/C++、C#调用DLL
文章目录 前言 一.生成dll 新建项目-C++-动态链接库(DLL) 项目-右键-属性-C/C++-预编译头:不使用预编译头. 项目-右键-属性-C/C++-高级:编译为:C.(也可以不更改,默认就 ...
- DLL文件是什么?有几种调用方式?
一.DLL文件是什么? DLL(Dynamic Link Library)文件为动态链接库文件,又称"应用程序拓展",是软件文件类型.在Windows中,许多应用程序并不是一个完整 ...
- vs 2017 制作Dll文件的两种方法,以及调用Dll文件的两种方法。
近来学习制作Dll文件,看了几个视频教程,看了网上的例子,看了msdn上的例子.现在做个总结,以便来日回顾,同时也希望以大家相互交流学习. 注意1:用 method 1 named "Usi ...
- html 调用c#dll中的控件,C#实现反射调用动态加载的DLL文件中的方法和在窗体中加载DLL文件的用户控件...
反射的作用: 1. 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型 2. 应用程序需要在运行时从某个特定的程序集中载入一个特定的类型,以便实现某个任务时可以用到反射. ...
- dll文件修复工具有官网可以下载吗?dll修复攻略
dll文件修复工具有官网可以下载吗?这里需要和大家明确的说,dll文件修复工具是没有官方网可以下载的!所有的dll文件修复工具都是属于第三方,微软是没有这个工具可以下载的.所以大家在选择的时候,需要谨 ...
- 苹果电脑python编程里面怎么切到中文_电脑语言怎么切换中文,AdobeInDesignCCforMac苹果笔记本上,怎样转换页面语言为中文英语?...
引: AdobeInDesignCCforMac苹果笔记本上,怎样转换页面语言为中文英语? 各种各样百度搜索沒有方式,随后去Google找到.流程以下: 关掉InDesign把Indesign程序文件 ...
- C语言实现数据文件怎么找,急求如何将下列C语言程序数据存储到文件中?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中. #include int ...
- c语言读取.ppm文件,孙其功陪你学之——C语言读取.ppm文件
C语言读取.ppm图像文件,读取的是每一个像素点的R.G.B的之0--255之间 在写读取程序时遇到好多问题,比如类型转换问题最是头疼,数据量特别大,开始读出的数据 可能有好大一部分为0,导致误认为读 ...
- 传智播客C语言视频第二季(第一季基础上增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 卷 ba ...
最新文章
- OpenAI与GitHub联手推出AI代码生成工具,比GPT-3更强大
- IE6左右边框断线现象
- conlleval_[转载]CRF++的使用总结
- 函数声明和变量声明提升
- 【高级绘图】MATLAB应用实战系列(八十)-圣诞前夜,想表白女神?教你如何用MATLAB绘制圣诞树动态图(附MATLAB代码)
- php内核分析-fpm和df的问题思考
- 升级鸿蒙系统效果,鸿蒙系统初体验 全方位体验升级[多图]
- 【MFC】MFC消息映射(二)
- factorybean与beanfactory
- java 7 jboss_JBoss7 入门指南
- python3类的继承详解_python3 多重继承机制
- python文字游戏源代码妈妈和我年纪_Python实现猜年龄游戏代码实例
- Flutter实战一Flutter聊天应用(四)
- linux 安装servlet环境_linux下一键搭建LAMP环境安装网站全教程
- 易语言mysql清空一个表_易语言高级表格清空.doc
- 德赛西威280b升级_车载导航刷机:德赛西威NAV280H固件升级
- CNC编程工程师如何炼成?要哪些必备技能?
- 【问题解决】Ubuntu无法进入图形页面,全屏出现OK,而且屏幕不停闪烁
- 把互联网界的大牛——王煜全老师开出的书单和大家分享一下
- 黑苹果和笔记本键盘按键的映射及快捷键的设置
热门文章
- Windows SendMessage和PostMessage区别(最简单的讲解)
- KVM-Arch-Figure
- Paravirtualization (半虚拟化PV) - Xen
- 【转】IPSec的原理
- 几个国内外远程工作平台
- #include_next
- linux a8启动过程,51CTO博客-专业IT技术博客创作平台-技术成就梦想
- 菜鸟python 正则表达式_python基础知识(进阶篇--正则表达式)
- fclose在c语言中的作用,c语言fcloseall函数用法实例介绍
- OpenShift 4 之Service Mesh教程(1)- 创建ServiceMesh环境,部署Istio的微服务