主题:C#可不可以调用用户用VC自定义的DLLs的类?
风之诺
[专家分:0] 发布于 2006-05-09 09:50:00
C#可不可以调用用户用VC自定义的DLLs的类?用什么方法?和调用函数的形式一样吗?
[DllImport("user32.dll")]
public static extern int GetWindowText(int hwnd,
StringBuilder buf, int nMaxCount);
谢谢大家指教
[em18]
回复列表 (共10个回复)
沙发
jzyray [专家分:20610] 发布于 2006-05-09 13:46:00
添加引用COM组件中的该dll,然后看导入的该类的信息进行调用。
板凳
风之诺 [专家分:0] 发布于 2006-05-09 15:24:00
哈哈,不好意思,我还是有点不明白,我想问一下,对于自己写的封装在DLL中的类,具体怎么调用?是不是不能调
3 楼
jzyray [专家分:20610] 发布于 2006-05-09 16:11:00
可以,只要能够被p/invoke模块识别就行
添加引入就行,就和引入其它组件一样,vs会自动进行p/invoke连接
4 楼
风之诺 [专家分:0] 发布于 2006-05-09 16:21:00
麻烦问一下,那如何具体引用类中的方法呢?
假如在zdy.dll中封装了类zdyclass,类定义了方法method。这样引用可以吗?
[DllImport("zdy.dll")]
public static extern class zdyclass();
zdyclass zdy=new zdyclass();
zdy.method();
5 楼
jzyray [专家分:20610] 发布于 2006-05-09 19:06:00
dllimport是不能直接加载类方法的。
需要用引用,我在1、3楼已经说到了,添加引用即可。
6 楼
风之诺 [专家分:0] 发布于 2006-05-11 11:43:00
我试了一下,可是若是将自己用VC写的封装了类的.dll引入会发生错误:‘不是有效的程序集或COM组件’?用VC写的封
装了函数的.dll也不行?难道就不能引入了,请指教
7 楼
风之诺 [专家分:0] 发布于 2006-05-11 12:45:00
我又试了一下,若调用用VC写.dll,则可以直接将.dll其放在C#的BIN文件下就可以,不用引用。不过可以引用其中封装的函数,类却不行。这样的话,难道就没有方法引用其中封装的类吗?
8 楼
yuhua [专家分:1730] 发布于 2006-05-11 13:25:00
注册成 COM组件 或者COM+ 组件
再引用就可以了
9 楼
风之诺 [专家分:0] 发布于 2006-05-12 10:11:00
可这样,又出现问题了,注册DLL时提示错误:可以加载,但没有找到DLLRegisterServer输入点。(我的DLL只是普通的类的封装)是不是要重写成遵从COM
标准的类才可以?请大家指教
10 楼
jzyray [专家分:20610] 发布于 2006-05-12 13:31:00
没有DLLRegisterServer因为你没有在dll中添加这个方法。
VC6似乎要手动添加这个方法,这个方法设计很简单,从网上一搜,就几行,改个注册表键而已。
我来回复