社区
C#
帖子详情
C#如何开发一个其它任何作程序可直接调用的dll
xiulinwang123
2011-11-28 07:53:54
C#如何开发一个其它任何作程序可直接调用的dll,像delphi一样创建library,还要公布方法,.net如何写呢
一般直接用vs创建的类别库那都是托管,不能直接在其它程式中调用,请各位赐教,再一个像delphi都是要公布方法的,在.net中如何编写要公布出动的方法,直接public static就可以吗?还是用其它方法,不甚感激!!
...全文
463
22
打赏
收藏
C#如何开发一个其它任何作程序可直接调用的dll
C#如何开发一个其它任何作程序可直接调用的dll,像delphi一样创建library,还要公布方法,.net如何写呢 一般直接用vs创建的类别库那都是托管,不能直接在其它程式中调用,请各位赐教,再一个像delphi都是要公布方法的,在.net中如何编写要公布出动的方法,直接public static就可以吗?还是用其它方法,不甚感激!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiulinwang123
2011-12-06
打赏
举报
回复
用此方法可以公布到非托管環境,我已經找一台沒有安裝.net framework的電腦,用編譯好的delphi程式調用呢.結果是可行的.
不過目前我碰到另一個問題,delphi在發布dll時,參數都聲明成pchar,這樣別的程式通過傳入一個空的字符參數都可以得到返回值,只要dll內部對此參數進行賦值.而完全不需要取方法的返回值,公司遺留的產品測試程式都是這樣訪問早前開發的delphi dll.現在用此方法,卻無法通過參數得到返回值,所以想請問如何在.net中去聲明pchar類型參數,是用char[]*類型嗎? 可是如何給它賦字符串值呢?
還請賜教!
jshi123
2011-11-29
打赏
举报
回复
可以用啊,注意用pchar传递字符串:
type TGetString = function(name:pchar):pchar; stdcall;
xiulinwang123
2011-11-29
打赏
举报
回复
謝謝 jshi123
我用了它的工具,在.net中開了console application可以直接用DllImport調用,確實方便了不少,非常感謝你的推薦,這工具很好用。
另外我嘗試用delphi去靜態或動態調用公布的方法都不行,不知你嘗試沒有?delphi源碼如下。
DummyLibrary.dll是這位俄国老外做的一個類庫,用delphi調用其中的sayhello是有問題的
還請各位想辦法解決此問題
TGetString = function(name:string):string;stdcall;
var
dllHandle:THandle;
fun:TGetString;
aword:string;
begin
dllHandle := LoadLibrary('C:\DummyLibrary.dll');
try
@fun : = GetProcAddress(dllHandle,'SayHello');
if Assigned(@fun) then
begin
aword:=fun('hello');
end;
finally
freelibrary(dllHandle);
end;
end;
足球中国
2011-11-29
打赏
举报
回复
c#写的dll虽然以com的方式可以在别的软件下使用。比较bug特多。最近弄的一个就挺麻烦。还是vc弄好一些。
assky124
2011-11-29
打赏
举报
回复
改成Web吧,整个WebService,基本的语言都支持的
vrhero
2011-11-29
打赏
举报
回复
[Quote=引用 18 楼 xiulinwang123 的回复:]
非常感谢,这样是可以直接调用了,这样形成的dll才是真正的动态链接库,可以任何程式中调用,而非局限.net环境
[/Quote]
想得美啊你...虽然.NET COM+是标准COM组件,一样离不了.NET Framework...“任何”是不可能的,.NET COM+连mono都支持不了...
xiulinwang123
2011-11-29
打赏
举报
回复
非常感谢,这样是可以直接调用了,这样形成的dll才是真正的动态链接库,可以任何程式中调用,而非局限.net环境
xiulinwang123
2011-11-28
打赏
举报
回复
我現在是用.net做dll給其它程式調用,並不是.net開發的程式,delphi就有創建library這樣的功能,開發時隻要公布方法,編譯後就可以調用, 所以想請教.net如何做? 給出具體點的步驟,感謝!
山东蓝鸟贵薪
2011-11-28
打赏
举报
回复
只要是其它语言开发的DLL做好通用接口即可
mjp1234airen4385
2011-11-28
打赏
举报
回复
不管是dll还是com形式的,都需要dotnet环境的支持。
因此,不要妄想抛开dotnet环境。
换语言吧。vb、vc、delphi
朕赐你肥皂
2011-11-28
打赏
举报
回复
嗯,只能是以COM组件形式去做,调用需要注册
qiume
2011-11-28
打赏
举报
回复
用C、C++或Delphi......
jshi123
2011-11-28
打赏
举报
回复
com组件可以在delphi中使用,.net framework都是需要的。
除了com,也可以写一个C++/CLR工程包裹c#类库,这里有个俄国老外写的工具,可以自动做这件事情:
http://www.codeproject.com/KB/dotnet/DllExporter.aspx
Just4life
2011-11-28
打赏
举报
回复
好像只能做COM形势的DLL吧 调用时需要注册
其他的dll形势 做不了喽
xiulinwang123
2011-11-28
打赏
举报
回复
将.net托管dll转换成com组件,部署出去仍然需要.net环境吗?需要安装.netframework吗?
bdmh
2011-11-28
打赏
举报
回复
其实基于.net的dll也可以调用,不过就是麻烦点,要注册com的形式被其他程序调用,非托管dll,它干不了
绿领巾童鞋
2011-11-28
打赏
举报
回复
恩,帮顶了,楼下请继续
wlm786803535
2011-11-28
打赏
举报
回复
好像不是很难啊
xiulinwang123
2011-11-28
打赏
举报
回复
C#直接創建類別庫專案形成的dll是托管的,無法在其它程式中引用,所以必須要將類別庫dll變成com dll.
我有個問題再問大家,delphi開發出來的dll是.net開發的com dll是一致的嗎?他們都可以直接在任何程式中引用嗎?
xiulinwang123
2011-11-28
打赏
举报
回复
自己頂下
c#
使用ffmpeg显示rtsp视频流
在
c#
中
直接
调用
ffmpeg接口有些困难,但是如果功能简单,通过二次封装接口成
dll
给
c#
调用
就很方便了,例如在
c#
中显示rtsp视频,可以
直接
改造ffmepg的示例代码demuxing.c ,封装成
dll
给
c#
调用
,在
c#
直接
用
一个
pixtruebox就Ok了。
C#
调用
DLL
的几种方法
c#
中
dll
调用
方法 一、
DLL
与应用
程序
动态链接库(也称为
DLL
,即为“Dynamic Link Library”的缩写)是Microsoft Windows最重要的组成要素之一,打开Windows系统文件夹,你会发现文件夹中有很多
DLL
文件,Windows就是将一些主要的系统功能以
DLL
模块的形式实现。 动态链接库是不能
直接
执行的,也不能接收消息,它只是
一个
独立的文件,其中包含能被
程序
或其它
DLL
调用
来完成一定操
作
的函数(方法。注:
C#
中一般称为“方法”),但这些函数不是执行
程序
本身的一部分,
C#
调用
C++的
dll
方法
C#
调用
C++的
dll
总归可以有两种方法: 1、非托管C++创建的
dll
库,需要用静态方法
调用
; 2、
直接
使用CLR,生成托管C++
dll
库。
C#
调用
dll
文件
一、
DLL
与应用
程序
动态链接库(也称为
DLL
,即为“Dynamic Link Library”的缩写)是Microsoft Windows最重要的组成要素之一,打开Windows系统文件夹,你会发现文件夹中有很多
DLL
文件,Windows就是将一些主要的系统功能以
DLL
模块的形式实现。 动态链接库是不能
直接
执行的,也不能接收消息,它只是
一个
独立的文件,其中包含能被
程序
或其它
DLL
...
c#
调用
dll
文件
c#
调用
dll
文件
C#
111,119
社区成员
642,545
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章