回 帖 发 新 帖 刷新版面

主题:C#可不可以调用用户用VC自定义的DLLs的类?

C#可不可以调用用户用VC自定义的DLLs的类?用什么方法?和调用函数的形式一样吗?
[DllImport("user32.dll")]
  public static extern int GetWindowText(int hwnd,
    StringBuilder buf, int nMaxCount);
谢谢大家指教
[em18]

回复列表 (共10个回复)

沙发

添加引用COM组件中的该dll,然后看导入的该类的信息进行调用。

板凳

哈哈,不好意思,我还是有点不明白,我想问一下,对于自己写的封装在DLL中的类,具体怎么调用?是不是不能调

3 楼

可以,只要能够被p/invoke模块识别就行

添加引入就行,就和引入其它组件一样,vs会自动进行p/invoke连接

4 楼

麻烦问一下,那如何具体引用类中的方法呢?
假如在zdy.dll中封装了类zdyclass,类定义了方法method。这样引用可以吗?
[DllImport("zdy.dll")]
public static extern class  zdyclass();
zdyclass zdy=new zdyclass();
zdy.method();

5 楼

dllimport是不能直接加载类方法的。

需要用引用,我在1、3楼已经说到了,添加引用即可。

6 楼

我试了一下,可是若是将自己用VC写的封装了类的.dll引入会发生错误:‘不是有效的程序集或COM组件’?用VC写的封

装了函数的.dll也不行?难道就不能引入了,请指教

7 楼

我又试了一下,若调用用VC写.dll,则可以直接将.dll其放在C#的BIN文件下就可以,不用引用。不过可以引用其中封装的函数,类却不行。这样的话,难道就没有方法引用其中封装的类吗?

8 楼

注册成 COM组件 或者COM+ 组件
再引用就可以了

9 楼

可这样,又出现问题了,注册DLL时提示错误:可以加载,但没有找到DLLRegisterServer输入点。(我的DLL只是普通的类的封装)是不是要重写成遵从COM
标准的类才可以?请大家指教

10 楼

没有DLLRegisterServer因为你没有在dll中添加这个方法。

VC6似乎要手动添加这个方法,这个方法设计很简单,从网上一搜,就几行,改个注册表键而已。

我来回复

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