vb.net生成java可调用的dll(2)

extern"C"__declspec(dllexport)voidWINAPIShowForm()ShowForm是方法名,WINAPI是什么呢?我没写也编译通过了,很... extern "C" __declspec(dllexport) void WINAPI ShowForm()

ShowForm是方法名,WINAPI 是什么呢?我没写也编译通过了,很费解阿。
写上WINAPI的话报错。

代码:
extern "C" __declspec(dllexport) void WINAPI CallNativeMethod1()
{
Form1^ form1 = gcnew Form1();
form1->Start();
}
展开
 我来答
空雪梦见
2013-10-09 · TA获得超过5598个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1201万
展开全部
调用函数的时候内部的工作原理。
不加的话默认是__cdecl,加的话变成__stdcall,
虽然没有硬性规定,不过DLL导出方法比较习惯会是后一种。
它涉及到调用函数的时候如何传递参数。

函数调用的时候参数是通过运行时栈来传递的,将参数放入栈中,然后进入函数代码执行
在执行完函数代码之后,要将栈中的参数清理掉。此时应该由哪一边来清理,是__cdecl和__stdcall最大的不同。
前者的原则是谁放进栈的谁清理,后者的原则是谁用完谁清理。

只要保证调用的一方的声明和被调用的一方的声明一致,就没有问题
否则会出现两边都不清理参数或者参数被重复清理的问题,都会造成栈的不平衡,然后大多数情况下这个时候程序崩溃

啥?写上WINAPI报错是不是没有引入必要的头文件啊比如windows.h……
直接写 __stdcall 来代替WINAPI也可以,如果没有引入头文件的话……
更多追问追答
追问
之前生成的dll,用java调用的时候是看不到方发名的,现在能看到了,但是调用的时时候出错。我用c++写了一个main函数调用vb的那个dll的时候发现报System.BadImageFormatException:异常。我百度了一下,说有可能是版本不一致出现的,我的vb,vc都是单独express版本vb是2010 vc++是2005,会是由于这个原因导致的异常么?
追答
VC++是2005的,用的运行时是 .net framework 2.0,VB.net是2010的,默认使用的运行时是 .net framework 4.0,这两者是不兼容的。
你要不要弄个VC++2010来看看……不过先提醒你,VC++2010在CLR方面是没有智能感知的,就是输入双冒号啊、箭头啊这一类的时候不会出来一个列表给你选(2012会出来
pdsh008
2013-10-09 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:139
采纳率:0%
帮助的人:103万
展开全部
VC有两种函数调用方式 一种是__stdcall,另一种是__cdecl
函数的调用方式有两种一种是PASCAL调用方式,另一种是C调用方式
使用PASCAL调用方式,函数在返回到调用者之前将参数从栈中删除
使用C调用方式,参数的删除是调用者完成的
WinMain函数是由系统调用的,Windows系统规定由系统调用的函数都遵守PASCAL调用方式
但是VC中函数的缺省调用方式是__cdecl,也就是C调用方式
所以在WinMain前显示的声明。
在Windows编程中将遇到很多声明修饰符,如CALLBACK,WINAPI,PASCAL这些在IntelCPU的计算机上都是__stdcall
详细的声明细节请看windef.h文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小狂中E
2013-10-09 · TA获得超过1418个赞
知道大有可为答主
回答量:1514
采纳率:66%
帮助的人:1029万
展开全部
要想java调用dll,必须先在java里声明一个native方法,然后编译,再用javap yourClass创建出头文件,然后再根据这个头文件写动态库
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
朱钰俎惜海
2019-05-29 · TA获得超过3900个赞
知道大有可为答主
回答量:3201
采纳率:31%
帮助的人:217万
展开全部
ocx有没有加壳?
要不要我试试看能不能破解这个ocx,把COleControl.IsInvokeAllowed给重写了……
不一定确保成功。
如果想试试看的话把这个ocx给我。
不过要我能用C++正确加载的……(就是说别缺什么文件
我跟踪一下看看有没有办法。
不行的话给你外挂一个dll把这个函数hack进去
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冬日咖啡香
2013-10-09
知道答主
回答量:17
采纳率:0%
帮助的人:5.4万
展开全部
莫非是类型?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式