主题: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似乎要手动添加这个方法,这个方法设计很简单,从网上一搜,就几行,改个注册表键而已。
							 
									
			
我来回复