C#调用VB6写的ActiveX Dll
搜索了很多资料,下载了Demo:http://download.csdn.net/detail/xieguoxian/2747484然后在同学电脑上测试才弄好...记录下
(一)
前期搜索资料:
VB写好的DLL,在C#里面添加引用,就会有与DLL同名的namespace,vb6的类模块变成interface,但是可以new出来调用,调用就是出错,说是未注册类...
具体提示是: COM类工厂中CLSID为{......}的组件时失败,原因是出现以下错误:80040154
于是手动regsvr32 mydll.dll,提示成功,但还是运行就报错...跟上面一样,说是未注册类...
再次搜索,下载到最上面的Demo,刚打开运行,就是跟上面报错一样...运行demo中的dll注册就弄好了,demo中的可以运行...
这张图是我问题解决后,regsvr32 /u testdll.dll重现错误给弄的

但是我自己的vb C# code就算是手动注册还是没辙.......郁闷啊
(二)
我尝试引用下载的demo中的DllTest.dll,我new调方法,对于同一个dll,demo中可以运行,我自己新建的不行
问题定位到我的C#项目上来了,于是千找万找,找到下面这不同...

这是demo中的dlltest属性

这是我的Winform引用中的Dlltest
不同点就是,路径 obj\[x86\]debug\......
一个有demo中的有x86,我的没有,我系统是64位,于是尝试将 项目-生成-目标平台改成x86,皆大欢喜,可以运行了...

(三)
这个x86 x64 AnyCpu我不太懂什么区别,改完了就可以运行
发现,其实在VS里面不用手动注册,但分发给别人用的时候,记得把dll也带进去,想办法在客户机上注册
VB代码
Public Function Haha(str As String) As String
MsgBox str
Haha = "string返回值"
End Function
C#就一个窗口,一个按钮
private void button1_Click(object sender, EventArgs e)
{
string vbreturn=new MYDll.WoHuiLe().Haha("c#传给VB函数的,在vb里面msgbox");
MessageBox.Show(vbreturn);
}
弹两次MsgBox,真欢乐...
手动注册不方便,去写个小工具吧...
C#调用VB6写的ActiveX Dll的更多相关文章
- asp 调用 vb(activex dll) ,参数传递(传引用)需要注意
今天上午测试 vb 与 c(dll) 之间交互,传递参数的时候,没遇到什么太大的问题. 下午在asp中调用vb(activex dll)时, 在asp代码中传参数到 vb(dll)中时,遇到问题了. ...
- c++ c# java 调用 c++ 写的dll
1. vs 中新建win32 dll 项目 testdll 添加实现文件 test.cpp #include "stdafx.h" #include <ios ...
- c++调用c#写的DLL
c++调用c#写的DLL: 此文章演示了建立c#的dll: c++建立工程,引入dll: 不能解决的问题: 指定dll的路径,在代码里面直接写 #using "xxx.dll" 必 ...
- QT调用C#写的Dll
参见: https://blog.csdn.net/weixin_42420155/article/details/81060945 C#写的dll是没有dllMain入口函数的,是一种中间语言,需要 ...
- Delphi7程序调用C#写的DLL解决办法(转)
近来,因工作需要,必须解决Delphi7写的主程序调用C#写的dll的问题.在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行: 编写C#dll的方法都一样,首先在vs2005中创建一个 ...
- 发现个delphi调用vc写的Dll中包括pchar參数报错奇怪现象
发现个delphi调用vc写的Dll中包括pchar參数奇怪现象 procedure中的第一行语句不能直接调用DLL的函数,否则会执行报错,在之前随意加上条语句就不报错了奇怪! vc的DLL源代码地址 ...
- 【转载】java调用C++写的DLL
用java调用C++写的DLL一直以来都是一个比较麻烦但又很常见的问题. 我们知道,使用 JNI 调用 .dll/.so 共享类库是非常非常麻烦和痛苦的. 如果有一个现有的 .dll/.so 文件,如 ...
- Delphi7程序调用C#写的DLL解决办法
近来,因工作需要,必须解决Delphi7写的主程序调用C#写的dll的问题.在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行: 编写C#dll的方法都一样,首先在vs2005中创建一 ...
- 其它 用VB6创建ActiveX.dll
1.打开VB6 2.选择 ActiveX DLL,点击打开 3.在窗口输入测试代码 Public Function addstr(str As String) As String addstr = & ...
随机推荐
- web前端技术
在网上找了点前端资料,记录下来,以便后面工作可能用到. Flat UI:一个WEB界面工具组件库.很多漂亮的菜单.按钮等. stickUp:一个jquery插件,可以将页面中的元素固定.经常用在把菜单 ...
- AngularJs练习Demo18 Resource
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport&quo ...
- effective_c++条款20,用pass-by-reference-to-const替换pass-by-value
pass-by-value void f(A a); 1)导致复制是浪费资源 2)多态是导致对象切割 所以我们使用 void f(const A& a) 上面的话针对class,不针对基本类型 ...
- debug 心得
前天做了一个题,就是个简单的状压记忆化搜索,但是debuge了俩小时,给我整的快吐血了,各种不可思议的错误,我都要怀疑是不是电脑有毛病了,后来发现数组开小了,看来以后遇到不可思议的错误就要检查数组开没 ...
- C++,关于类和结构体中,成员访问属性(public,private)
今天发现一个的问题: #include <vector> #include <iostream> #include <algorithm> #include < ...
- (原)torch的apply函数
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6221633.html torch中的apply函数通过可以不断遍历model的各个模块.实际上其使用的 ...
- VNC配置连接远程服务器桌面-linux\windows
一.VNC配置连接远程服务器桌面 1.服务器安装VNC-server # yum -y install vnc-server 2.配置VNC连接登陆密码 # vncpasswd 回车 3.配置VNC- ...
- Js收藏-转
/** * <P> Title: JavaScript Util </P> * <P> Description: JavaScript 工具 </P> ...
- PCB布线的地线干扰与抑制方法
1.地线的定义什么是地线?大家在教科书上学的地线定义是:地线是作为电路电位基准点的等电位体.这个定义是不符合实际情况的.实际地线上的电位并不是恒定的.如果用仪表测量一下地线上各点之间的电位,会发现地线 ...
- sql management studio 附加mdf文件出错的解决办法
将mdf文件所在文件夹的权限改为everyone.,完全控制即可.