回 帖 发 新 帖 刷新版面

主题:如何用c#做一个dll文件,可以在其他程序中进行调用?

如何用c#做一个dll文件,可以在其他程序中进行调用?
也就是如何利用c#生成一个可以在外部调用的,原来的非托管模式的win32的dll文件?比如,我可以在PB中调用我写的dll文件。

回复列表 (共10个回复)

沙发

哪位高手指点小弟一下啊!!!!!

板凳

好像C#没有这个能力

3 楼

如果想在pb中调用
就把C#写的dll做成标准的com组件
但需要在目标机上装.net框架和一些命令
我前几天正好做过,给你看看我测试的东西:
using System;
using System.Runtime.InteropServices;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security.Cryptography;

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyKeyFile("..\\..\\TestKey.snk")]
namespace TestDLL
{

    [Guid("66DCC054-AADC-4a17-ACD2-CE82512F5363")] 
    public interface ITest
    {
        string SaveOperations(string key);
    }
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    [Guid("6504BE69-59CE-486f-B6EB-99677A244503")]
    public class Test:ITest
    {
        string name="测试用的dll";
        public Test()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }
        #region ITest 成员

        public string SaveOperations(string key)
        {
            
            // TODO:  添加 Test.SaveOperations 实现
            return name+key;
        }

        #endregion
    }
}
注册的步骤:
csc /t:library /out:TestDLL.DLL TestDLL.cs
tlbexp TestDLL.dll /out:TestDLL.tlb
regasm /tlb:TestDLL.tlb TestDLL.dll
gacutil /I TestDLL.dll

对了.snk 文件是sn命令生成的,guid号使用一个工具,叫guidgen.exe
最后注明,一切命令都在.net命令提示符下面

4 楼

C#能做出标准的COM?~~~

5 楼

呵呵
这个只和.net有关系
和c#没啥关系呵呵

C#的com组件是什么语言都可以用的,但是需要.net注册环境

6 楼

.net 出现好像就叫着说用.net组件取代com 
可以还不是要与com交互?

7 楼

谢谢yuhua了。

你上面的过程我试过了

但我还不知道在PB中怎么调用组件,,

能不能在赐教一下啊

呵呵!!!!!
谢谢yuhua了。

你上面的过程我试过了

但我还不知道在PB中怎么调用组件,,

能不能在赐教一下啊

呵呵!!!!!

先在这预谢了啊!
先在这预谢了啊!

8 楼

因为我现在是要做个组件,,给别人用PB调用,,我自己还不知道怎么用PB调用组件呵

这是小弟的第一次编写组件啊

望大哥给帮帮忙!

9 楼

你让他用ole对象
有个connectiontoobject()方法
参数是:namespace.calssname
或者你根据你的guid号 去注册表里面查处对象名
我是在vb里用的,
原理一样
他如果pb熟的话应该知道怎么用com对象,

但有一点:他在使用前要按照上面的步骤注册

10 楼

yuhua,你好!!

你做过用PB调用C#组件的例子吗?

因为我现在不知道程序对不对,我自己要试着用PB来调用测试一下,

能不能告诉我具体的步骤啊!

我来回复

您尚未登录,请登录后再回复。点此登录或注册