LoadLibrary("WTclient.dll")调用失败

clw_zxq 2009-11-26 08:17:17
大家好,我最近下载了Wintech公司开发的OPC客户端开发工具包,打算使用其带有的DLL,可是我在
使用的过程中却出现了错误,不知为什么?使用的是VC6, Win32 app,simple project,代码如下:
// RegTest.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
//#include "WTclientAPI.h"
//#include "RegTest.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
typedef BOOL(*pReg) (LPCSTR Authorization);
BOOL bReg;
HINSTANCE hReg;
pReg Regno;
hReg=LoadLibrary("WTclient.dll");
if(hReg==NULL)
MessageBox(NULL,"error","learnwhen",NULL);
// Regno=(pReg)GetProcAddress(hReg,"Disable30MinTimer");
// bReg=Regno("kake");
FreeLibrary(hReg);
return 0;
}
我要用的WTclient.dll也拷贝到了文件目录下,但是就是无法使用,执行DEBUG文件下生成的文件,就显示“error",
这说明是没用调用成功。
...全文
224 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
clw_zxq 2009-11-27
  • 打赏
  • 举报
回复
我把WTclient.dll拷贝到Debug,或者Release下含有.EXE的文件夹下就可以了,谢谢大家。
supconsupcon 2009-11-26
  • 打赏
  • 举报
回复
是不是EXE调用的DLL依赖于其它的DLL,用DEPENDES看看吧
Lawrencewt 2009-11-26
  • 打赏
  • 举报
回复
当然最直接的办法就是:把需要调用的dll和正在编译的工程放在同一个目录下就可以了,不用设置路径。
注意:不是和exe同一个目录,因为exe一般要不在debug中,要不就在release中。
Lawrencewt 2009-11-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liuchaotao 的回复:]
路径的问题。默认的路径不一定是你的程序的路径。
GetModuleFileName(NULL,szPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
szPath.ReleaseBuffer();
int nPos=szPath.ReverseFind('\\');
szPath=szPath.Left(nPos);

[/Quote]

要获得当前正在执行程序的路径似乎应该做如下修改:
GetModuleFileName(NULL,szPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
int nPos=szPath.ReverseFind('\\');
szPath=szPath.Left(nPos);
也就是说不用szPath.ReleaseBuff();
这个函数在调用CString::GetBuff()后;才需要调用。
MoXiaoRab 2009-11-26
  • 打赏
  • 举报
回复
用绝对路径试试看
luckyboy101 2009-11-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wocow3 的回复:]
最简单的,把WTclient.dll与你的exe放在一个目录,如果放在工程目录,外部直接运行exe会找不到dll文件
[/Quote]
代码应该没错
wocow3 2009-11-26
  • 打赏
  • 举报
回复
最简单的,把WTclient.dll与你的exe放在一个目录,如果放在工程目录,外部直接运行exe会找不到dll文件
liuchaotao 2009-11-26
  • 打赏
  • 举报
回复
然后
hReg=LoadLibrary(szPath+"\\WTclient.dll");
liuchaotao 2009-11-26
  • 打赏
  • 举报
回复
路径的问题。默认的路径不一定是你的程序的路径。
GetModuleFileName(NULL,szPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
szPath.ReleaseBuffer();
int nPos=szPath.ReverseFind('\\');
szPath=szPath.Left(nPos);
MrEdifier 2009-11-26
  • 打赏
  • 举报
回复
最好把错误码发来看看

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧