[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相关推荐

  1. C#【必备技能篇】VS2019 使用C/C++ 生成DLL 文件,并用 C/C++、C#调用DLL

    文章目录 前言 一.生成dll 新建项目-C++-动态链接库(DLL) 项目-右键-属性-C/C++-预编译头:不使用预编译头. 项目-右键-属性-C/C++-高级:编译为:C.(也可以不更改,默认就 ...

  2. DLL文件是什么?有几种调用方式?

    一.DLL文件是什么? DLL(Dynamic Link Library)文件为动态链接库文件,又称"应用程序拓展",是软件文件类型.在Windows中,许多应用程序并不是一个完整 ...

  3. vs 2017 制作Dll文件的两种方法,以及调用Dll文件的两种方法。

    近来学习制作Dll文件,看了几个视频教程,看了网上的例子,看了msdn上的例子.现在做个总结,以便来日回顾,同时也希望以大家相互交流学习. 注意1:用 method 1 named "Usi ...

  4. html 调用c#dll中的控件,C#实现反射调用动态加载的DLL文件中的方法和在窗体中加载DLL文件的用户控件...

    反射的作用: 1. 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型 2. 应用程序需要在运行时从某个特定的程序集中载入一个特定的类型,以便实现某个任务时可以用到反射. ...

  5. dll文件修复工具有官网可以下载吗?dll修复攻略

    dll文件修复工具有官网可以下载吗?这里需要和大家明确的说,dll文件修复工具是没有官方网可以下载的!所有的dll文件修复工具都是属于第三方,微软是没有这个工具可以下载的.所以大家在选择的时候,需要谨 ...

  6. 苹果电脑python编程里面怎么切到中文_电脑语言怎么切换中文,AdobeInDesignCCforMac苹果笔记本上,怎样转换页面语言为中文英语?...

    引: AdobeInDesignCCforMac苹果笔记本上,怎样转换页面语言为中文英语? 各种各样百度搜索沒有方式,随后去Google找到.流程以下: 关掉InDesign把Indesign程序文件 ...

  7. C语言实现数据文件怎么找,急求如何将下列C语言程序数据存储到文件中?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中. #include int ...

  8. c语言读取.ppm文件,孙其功陪你学之——C语言读取.ppm文件

    C语言读取.ppm图像文件,读取的是每一个像素点的R.G.B的之0--255之间 在写读取程序时遇到好多问题,比如类型转换问题最是头疼,数据量特别大,开始读出的数据 可能有好大一部分为0,导致误认为读 ...

  9. 传智播客C语言视频第二季(第一季基础上增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 卷 ba ...

最新文章

  1. OpenAI与GitHub联手推出AI代码生成工具,比GPT-3更强大
  2. IE6左右边框断线现象
  3. conlleval_[转载]CRF++的使用总结
  4. 函数声明和变量声明提升
  5. 【高级绘图】MATLAB应用实战系列(八十)-圣诞前夜,想表白女神?教你如何用MATLAB绘制圣诞树动态图(附MATLAB代码)
  6. php内核分析-fpm和df的问题思考
  7. 升级鸿蒙系统效果,鸿蒙系统初体验 全方位体验升级[多图]
  8. 【MFC】MFC消息映射(二)
  9. factorybean与beanfactory
  10. java 7 jboss_JBoss7 入门指南
  11. python3类的继承详解_python3 多重继承机制
  12. python文字游戏源代码妈妈和我年纪_Python实现猜年龄游戏代码实例
  13. Flutter实战一Flutter聊天应用(四)
  14. linux 安装servlet环境_linux下一键搭建LAMP环境安装网站全教程
  15. 易语言mysql清空一个表_易语言高级表格清空.doc
  16. 德赛西威280b升级_车载导航刷机:德赛西威NAV280H固件升级
  17. CNC编程工程师如何炼成?要哪些必备技能?
  18. 【问题解决】Ubuntu无法进入图形页面,全屏出现OK,而且屏幕不停闪烁
  19. 把互联网界的大牛——王煜全老师开出的书单和大家分享一下
  20. 黑苹果和笔记本键盘按键的映射及快捷键的设置

热门文章

  1. Windows SendMessage和PostMessage区别(最简单的讲解)
  2. KVM-Arch-Figure
  3. Paravirtualization (半虚拟化PV) - Xen
  4. 【转】IPSec的原理
  5. 几个国内外远程工作平台
  6. #include_next
  7. linux a8启动过程,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  8. 菜鸟python 正则表达式_python基础知识(进阶篇--正则表达式)
  9. fclose在c语言中的作用,c语言fcloseall函数用法实例介绍
  10. OpenShift 4 之Service Mesh教程(1)- 创建ServiceMesh环境,部署Istio的微服务