使用c#创建php可以调用的dll
1. 创建一个 C# Class Library ,命名为:ClassLibraryDemo
2. 打开项目的属性,在点选左边的 “Application”(就是第一个tab) , 然后点击 Assembly Information 按钮 ,在弹出的Dialog中, 必须在底部勾上: Make assembly COM-visible !否则 , 这个dll将不能以COM方式访问 .( 也可以在代码中的类声明中写上[ComVisible(true)] , 效果一样,需要增加using System.Runtime.InteropServices;引用)
3. 创建强命名签名文件并使用
使用vs.net的“Vsitual Studio .Net工具”–>Vistual Studio .Net命令提示符,输入 sn -k d:\ClassLibraryDemo.snk回车即创建了强命名签名文件
打开项目的属性,点选左边Signing 勾上Sign the assembly 在 Choose a strong name key file:处选择<Browse> 选择刚才创建的HelloWorld.snk文件
4. 创建类库并编译成dll
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices;namespace ClassLibraryDemo {[ComVisible(true)]public class Hello{public string Write(){return "Hello World";}} }
5. 找到dll文件夹路径
然后使用vs.net的“Vsitual Studio .Net工具”–>Vistual Studio .Net命令提示符
进入该dll文件夹下输入: regasm HelloWorld.dll<回车>。
这时候,这个.dll的.net程序集就变成一个标准的Com组件了,但是还不能用,必须让它变成全局Com组件.
这个regasm 实用程序将创建一个类型库并在 Windows 注册表中对其进行注册,以使 PhysServer2.dll 中的类对 COM 客户端可用 .
需要做下面步骤
将程序集添加到全局程序集缓存中
进入提示符窗口,输入: gacutil /I ClassLibraryDemo.dll<回车>
这时,你的这个dll就被复制到全局程序集缓存中了.也就是说无论在这个电脑的哪个硬盘上都可以使用此dll组件了.
如果不进行强命名签名,这一步会提示加载失败
PHP测试
<?php
$r=new Com("ClassLibraryDemo.Hello");
$s=$r->Write();
echo $s;
?>
问题:到第五步失败了。。后续补充。。。
转载于:https://www.cnblogs.com/xcsn/p/3481987.html
使用c#创建php可以调用的dll相关推荐
- vs2008 C++创建和调用标准DLL
为了共享代码,需要生成标准的dll,本文将介绍在vs2008 C++生成及调用dll. 一.生成DLL 生成一个名为FunDll的dll文件,对外函数为addl. step1:vs2008 环境下,文 ...
- VC++6.0如何创建与调用动态链接库(dll)
VC++支持的DLL: DLL的编制与具体的编程语言及编译器无关,动态链接库随处可见,VC++支持三种DLL:非MFC动态库.MFC规则DLL和MFC扩展DLL.DLL导出函数(或变量.类)可供应用程 ...
- C# 调用C++ dll 返回char*调用方式(StringBuilder乱码)
// CDLLDemo.cpp : 定义 DLL 应用程序的导出函数. // #include "stdafx.h" #include "string.h" # ...
- C#调用C++DLL类的方法
C++的优势在于高效灵活,C#的优势在于简单易用,两者结合起来对项目开发来说是件好事,而且C++不容易反编译,也保障了代码的安全性,如果一些核心算法使用C#编写,那么保密就是一个问题. C++ ...
- 非常好的dllimport 文章--在 C# 中通过 P/Invoke 调用Win32 DLL
http://msdn.microsoft.com/zh-cn/library/aa686045.aspx 在 C# 中通过 P/Invoke 调用Win32 DLL 发布日期 : 1/13/2005 ...
- 10.4.4 使用ctypes调用kernel32.dll中的函数
10.4.4 使用ctypes调用kernel32.dll中的函数 2007-10-17 14:41 孙广磊 人民邮电出版社 字号:T | T 综合评级: 想读(5) 在读(0) 已读(6) ...
- C++动态(显式)调用 C++ dll示例
1.创建DLL新项目Dll1,Dll1.cpp: 1 extern "C" __declspec(dllexport) const char* myfunc() 2 { 3 ret ...
- C#调用C++Dll封装时遇到的一系列问题 参考
在合作开发时,C#时常需要调用C++DLL,当传递参数时时常遇到问题,尤其是传递和返回字符串是,现总结一下,分享给大家: VC++中主要字符串类型为:LPSTR,LPCSTR, LPCTSTR, ...
- c#调用外部dll详解
一. DLL与应用程序 动态链接库(也称为DLL,即为"Dynamic Link Library"的缩写)是Microsoft Windows最重要的组成要素之一, ...
最新文章
- Python+Django+Eclipse 在Windows下快速开发自己的网站
- Markdown中数学公式练习
- 【NLP】bert4vec:一个基于预训练的句向量生成工具
- bread是可数还是不可数_​面包bread是可数名词还是不可数
- python 使用标准库连接linux实现scp和执行命令
- Lucene分类统计示例
- 设计模式 - Composite
- 11G Oracle RAC添加新表空间时数据文件误放置到本地文件系统的修正
- kubernetes实践之运行aspnetcore webapi微服务
- Python学习笔记之Windows下通过pip安装PyMySQL
- 家装软件相关算法和技术归纳
- 阿里云网关签名特殊字符无法通过
- 交换机与路由器技术:VLAN Trunk、单臂路由和三层交换及配置
- matplotlib之pyplot模块之坐标轴配置(axis():设置坐标轴外观、设置坐标轴范围)
- 什么是Websocket以及Nginx实现ws代理
- 春暖花开,我们去踏青
- 平安科技从 Oracle 迁移到 UbiSQL 的实践
- pythonista免费下载-pythonista 3ios
- 关于branch XYZ is published (but not merged) and is now N commits behind错误的解决方法
- 迷茫?生命科学如何破局冰山!道翰天琼认知智能机器人平台API接口大脑为您揭秘-64
热门文章
- FMCW毫米波雷达原理
- logistic regression一点理解
- Tensorflow教程: tf.Variable() 和tf.get_variable()
- 关于国土空间规划的价值的一些思考
- 村土地利用规划和村庄规划的区别和联系
- c++框架有哪些_平顶彩钢活动房特点以及用途有哪些?
- linux添加驱动目录,Android系统添加Linux驱动
- typescript和 java区别_typescript中interface和type的区别
- 等产量曲线中r_微观经济学第四章练习题
- webpack整体了解