前提:.net的DLL被包装成COM接口,提供dll文件外,还有tlb文件。
1、 注册.net的DLL
在Regasm所在目录下执行
Regasm c:/ Encryptcom.dll /tlb: c:/ Encryptcom.tlb
regasm.exe c:/ Encryptcom.dll /tlb /codebase
2、 VC++中用ClassWizaed导入.net的类文件
3、 包装类中方法,并用C格式返回
extern "C"
{
//用DES算法加密,并转换成Base64码
_declspec(dllexport) char* ng_encode(char* str,char* str2)
{
char* ret;
strcat(str,str2);
CoInitialize(NULL);
IEncryptFacade foo;
if(foo.CreateDispatch("EncryptCom.EncryptFacade")!=0)
{
ret = foo.TripleDesEncryptToBase64(str);
foo.ReleaseDispatch();
}
CoUninitialize();
return ret;
}
//从一个Base64串,通过转换再DES解码
_declspec(dllexport) char* ng_deencode(char* str)
{
char* ret;
CoInitialize(NULL);
IEncryptFacade foo;
if(foo.CreateDispatch("EncryptCom.EncryptFacade")!=0)
{
ret = foo.TripleDesDecryptFromBase64(str);
foo.ReleaseDispatch();
}
CoUninitialize();
return ret;
}
}
在LR脚本中即可使用ng_encode或ng_deencode函数。