Code前端首页关于Code前端联系我们

php怎么调用c的动态链接库(js调用dll动态链接库)

terry 2年前 (2023-09-30) 阅读数 56 #PHP
文章标签 str_replace函数

本文目录一览:

  • 1、PHP如何用调用C#编写的DLL
  • 2、PHP可否调用动态链接库
  • 3、php怎么调用 dll动态库
  • 4、PHP能调用第三方动态链接库吗?

PHP如何用调用C#编写的DLL

1. 创建一个 C# Class Library ,命名为:HelloWorld

2. 打开项目的属性,在点选左边的 "Application"(就是第一个tab) , 然后点击Assembly Information 按钮 ,在弹出的Dialog中, 必须在底部勾上: Make assembly COM-visible !否则 , 这个dll将不能以COM方式访问 .( 也可以在代码中的类声明中写上[ComVisible(true)] , 效果一样,需要增加using System.Runtime.InteropServices;引用)

PHP调用C#开发的dll类库方法

3. 创建强命名签名文件并使用

使用vs.net的“Vsitual Studio .Net工具”--Vistual Studio .Net命令提示符,输入 sn -k d:HelloWorld.snk 回车即创建了强命名签名文件

打开项目的属性,点选左边Signing 勾上Sign the assembly 在 Choose a strong name key file:处选择 选择刚才创建的HelloWorld.snk文件

4. 创建类库并编译成dll

复制代码 代码如下:

namespace HelloWorld

{

//[ComVisible(true)] //or check "Assembly COM-Visible" at Application-Assembly_Information dialog ;

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组件.

将程序集添加到全局程序集缓存中

进入提示符窗口,输入:

复制代码 代码如下:

gacutil /I HelloWorld.dll回车

这时,你的这个dll就被复制到全局程序集缓存中了.也就是说无论在这个电脑的哪个硬盘上都可以使用此dll组件了.

如果不进行强命名签名,这一步会提示加载失败:

PHP可否调用动态链接库

当php.ini中的enable_dl选项为on时,可以使用下面这个函数来加载dll文件:

int dl ( string library ),但是当系统处于安全模式时,即使enable_dl为on,也无法使用.

?php

// Example loading an extension based on OS

if (!extension_loaded('sqlite')) {

if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) {

dl('php_sqlite.dll');

} else {

dl('sqlite.so');

}

}

// Or, the PHP_SHLIB_SUFFIX constant is available as of PHP 4.3.0

if (!extension_loaded('sqlite')) {

$prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : '';

dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);

}

?

这属于动态加载dll文件,还有一种方法就是,将你的dll文件放到php的ext目录下,然后在你的php.ini文件里面找到一大堆:extension=php_xxxx.dll那里,找个空行,按照这个写法写上去,注意前面不要有";"号.重启apache后,就可以调用里面的东西了.

php怎么调用 dll动态库

做成 php 的扩展,就可以调用了。 把做好的dll文件放在php的扩展模块路径下面,然后在php.ini文件中追加 extension=extname.dll 如果dll文件没问题,接着就可以在php文件中直接调用其中的函数了。

PHP能调用第三方动态链接库吗?

一般情况下是这样的,先在require里添加想要使用的第三方插件,然后composer update,之后在app/config/app.php中添加ServiceProvider和alias。

composer.json

`"autoload": {

"classmap": [

"app/commands",

"app/controllers",

"app/models",

"app/database/migrations",

"app/database/seeds",

"app/tests/TestCase.php"

"app/your_dir/test.php"

]

},`

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门