苹果高仿手机能刷机吗到底可不可以刷机

搜索了很多资料,下载了Demo:然后在同学电脑上测试才弄好...记录下
前期搜索资料:
  VB写好的DLL,在C#里面添加引用,就会有与DLL同名的namespace,vb6的类模块变成interface,但是可以new出来调用,调用就是出错,说是未注册类...
    具体提示是:&COM类工厂中CLSID为{......}的组件时失败,原因是出现以下错误:
  于是手动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也带进去,想办法在客户机上注册
1 Public Function Haha(str As String) As String
MsgBox str
Haha = "string返回值"
4 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,真欢乐...
手动注册不方便,去写个小工具吧...
阅读(...) 评论()从 Visual Basic 应用程序调用 DLL 函数
从 Visual Basic 应用程序调用 DLL 函数
从 Visual Basic 应用程序调用 DLL 函数
Visual Studio 2015
若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 。为使 Visual Basic 应用程序(或使用 Pascal 或 Fortran 等其他语言的应用程序)可以调用 C/C++ DLL 中的函数,必须使用正确的调用约定导出函数,但不要让编译器进行任何名称修饰。__stdcall 为函数创建正确的调用约定(被调用函数清理堆栈,而参数从右向左传递),但以不同的方式修饰函数名。
因此,当在 DLL 中的导出函数上使用 __declspec(dllexport) 时,修饰名被导出。__stdcall 名称修饰用下划线 (_) 作为符号名的前缀,并在符号的后面追加一个 @ 符,@ 符后是参数列表中的字节数(所需的堆栈空间)。
因此,函数声明为:
int __stdcall func (int a, double b)
其修饰名为:
C 调用约定 (__cdecl) 将该名称修饰为 _func。若要获取修饰名,请使用 。
使用 __declspec(dllexport) 将完成下列工作:如果函数是用 C 调用约定 (_cdecl) 导出的,则它在导出名称时抽出前导下划线 (_)。如果函数不是用 C 调用约定(例如,__stdcall)导出的,则它导出修饰名。由于没有办法重写堆栈清理发生的位置,因此必须使用 __stdcall。
若要使用 __stdcall 取消修饰名,必须通过在 .def 文件的 EXPORTS 节中使用别名来指定它们。
如以下函数声明所示:
__stdcall MyFunc (int a, double b);
void __stdcall InitCode (void);
在 .DEF 文件中:
MYFUNC=_MyFunc@12
INITCODE=_InitCode@0
对于将由用 Visual Basic 编写的程序调用的 DLL,在 .def 文件中需要使用本主题介绍的别名技术。
如果在 Visual Basic 程序中完成了别名,则不需要在 .def 文件中使用别名。
在 Visual Basic 程序中,这可以通过将别名子句添加到
语句来完成。
此页面有帮助吗?
更多反馈?
1500 个剩余字符
我们非常感谢您的反馈。C#生成Com组件dll供VB6调用
Eddy 发布于 10:57:3 分类: 已浏览loading次
1.C#代码
using S
using System.Collections.G
using System.T
using System.Runtime.InteropS
namespace testDll
{
[ComVisible(true)]
public interface iClass1
string test(string data,string url);
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class Class1 : iClass1
public string test(string data,string url)
if (url == &&) return &&;
mySerName.DSServerService sv = new mySerName.DSServerService();
return sv.send(data);
}
}
2.组件注册regasm.exe /tlb:testDll.tlb testDll.dll3.使用首先工程中引用testDll.tlb,然后如下方式调用:Dim ob As New testDll.Class1debug.print ob.test(strData, strUrl)
原创文章如转载,请注明:转载自
原文地址: &&&&欢迎。
Tags:&&&&&&&&
关于 &&&&&&&&的相关文章
记住我的信息,下次不用再输入
最新评论及回复
大家最关注
大家最喜欢

我要回帖

更多关于 高仿苹果手机怎么刷机 的文章

 

随机推荐