java jsp 怎么加载dll_Jsp调用ocx调用dll

可以创建MFC ActivX control 或者

创建 ATL Project加 ATL Control

为了方便取CLASSID我选用后者做工程,因为MFC自动生成3个UUID,我也搞不懂哪一个才是注册表的那个。(PS:如有高手看到此文,请帮助解答下谢谢。)

Jsp调用OCX需要指定ocx/dll在哪,这需要注册表执行以下命令,注意有些单位变态,你可能没有管理员权限,导致无法执行regsvr32命令

@ECHO installing

copy

D:\ocx\RemtCard\Debug\RemtCard.dll

%windir%\system32\RemtCard.dll

regsvr32 RemtCard.dll

Jsp页面引用如下:(工程下有htm文件,直接COPY)

CLASSID="CLSID:7987BF0A-5F1E-47B5-997C-AD0236FD8824">

var bbb =

aa.GetVersion();

alert(bbb);

OCX工程class view视图右键add

method,特别注意返回值,要把out与retval都选择上,我就是没选择retval导致页面alert时总是undefined。如果忘记加retval则修改.idl文件

[id(2)] HRESULT GetVersion([out,retval]

BSTR* version);

Vc工程cpp文件方法如下

STDMETHODIMP CRemtCardCtrl::GetVersion(BSTR*

version)

{

*version

= SysAllocString(OLESTR("Hello你好啊!"));

SysFreeString(*version);

::MessageBox(NULL,

"-------", "error", MB_ICONERROR);

return

S_OK;

}

如果ocx再调用dll则加入

char szDllFile[MAX_PATH 1];

sprintf(szDllFile, "D:\\ocx\\12.dll");

HINSTANCE g_hinstLib

= LoadLibrary(szDllFile);

typedef int (WINAPI *

OPSClient)(char*);

OPSClient aaa;

aaa = (OPSClient)

GetProcAddress(g_hinstLib, "GetDllVersion 此处为DLL方法名");

这点东西从周二下午搞到周五下午实在不应该,PS周二下午装了VS2010装了一下午。

总结下,浪费时间最久的是regsvr32注册不好用,必须管理员权限,然后之前用MFC

ACTIVEX的工程,不知道哪个是CLASSID,又去注册表查ID,查出来ID又不对(原因,得多查下,查出带有VERSION跟什么来着,总之很多的KEY

VALUE那个ID才是)。接着是返回值问题,总也取不到值,为了试验好不好用,加入了::MessageBox(NULL,

"aaaaaa",

"error", MB_ICONERROR);

页面有影响,但就是没返回值。

做了3年半的VC,之后2年没做,结果就忘记怎么创建工程了~~哎无语~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值