还是万恶的BCB,调用 VC 写的 dll ,无法获取正确数据。
这个dll 是VC 写的,刚开始 我直接包含lib文件和头文件,编译通不过,
查资料发现 BCB 和 VC 所产生的 lib 文件格式不一样,之后就改用动态加载的方法,
虽然能够调用改 dll 里的函数,但获得的结果却不对,郁闷ing 。
typedef int _stdcall (*init)(String, String, String, String);
init lpInit;
HINSTANCE DLLInst = NULL;
DLLInst = ::LoadLibrary("ImApi.dll");
if( DLLInst == NULL)
{
ShowMessage("加载ImApi.dll 失败");
}
lpInit = (init)::GetProcAddress(DLLInst, "init");
if(NULL == lpInit)
{
ShowMessage("获取init 函数 失败");
}
int ret = lpInit("192.168.0.218", "root", "", "api");
这个ret 的结果明显不对,哎!
是不是 BCB 和 VC 所产生的 dll 也 不一样,所以导致这样的问题?是不是dll文件也要转换?
还有如何 使用 TLIBIMP 命令进行转换?
TLIBIMP.EXE 路径\文件名.lib 路径\目标文件.lib ?
我用这条命令,却提示错误:如下
F:\IMAPI\C++>TLIBIMP ImApi.lib tmp.lib
Borland TLIBIMP Version 6.20
Copyright (c) 1997, 2002 Borland Software Corporation
Error loading type library tmp.lib.