C++builder加载WinIo.dll失败

luohuayouy 2013-08-14 10:36:36
// ---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "winio.h"
// ---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#pragma comment(lib, "WinIo32.lib")

TForm1 *Form1;
typedef bool(_stdcall*bRet1)();
typedef bool(_stdcall*bRet2)(WORD wPortAddr, DWORD dwPortVal, BYTE bSize);
typedef void(_stdcall*bVoid)();

// ---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {
}

// ---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender) {

HINSTANCE h1 = LoadLibrary("WinIo32.dll");
if (h1)
{
// bool _stdcall InitializeWinIo();
// 2 地址 代理函数=(地址)::GetProcAddress(h,"原函数")
bRet1 iz = (bRet1)GetProcAddress(h1, "InitializeWinIo");
if (!iz)
{
// printf("fale in InitializeWinIo GetProcAddress");
ShowMessage("fale in InitializeWinIo GetProcAddress");
}
else
{
ShowMessage("111");
bool a = iz();
if (a)
{
ShowMessage("true");
}
else
{
ShowMessage("false");
}
}

}
else
{
ShowMessage("加载dll失败");
exit(0);
}
}


以上是我加载WinIo32.dll文件的代码,运行时会执行ShowMessage("加载dll失败");这句代码。请各位指点一下我哪里错了!WinIo32.dll和WinIO32.sys我已经放在工程目录下了。
...全文
258 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
好堤 2014-03-14
  • 打赏
  • 举报
回复
请问可以用什么替代?
引用 3 楼 sololie 的回复:
winio好老了,还有人在用啊
Kanson 2013-08-14
  • 打赏
  • 举报
回复
不行的话 先把.dll 做成一个.lib文件 然后调用看看
sololie 2013-08-14
  • 打赏
  • 举报
回复
winio好老了,还有人在用啊
孟豆豆 2013-08-14
  • 打赏
  • 举报
回复
而且,你 #include "WinIo.h" #pragma comment( lib, "WinIo.lib" ) 这样用了就说明你要使用静态库来静态调用了…… 下面你又自己LoadLibrary("WinIo32.dll");又成动态调用了…… 貌似很混乱的缩…… 像一般的调用DLL内的函数,要么用加载LIB静态库来使用头文件中声明好的DLL中的函数进行编译,程序运行时会自行调用对应DLL中的函数; 要么直接动态调用DLL中函数,直接获得函数地址,如你上面所用的做法; 但是真没有两种都搞到一起的……
孟豆豆 2013-08-14
  • 打赏
  • 举报
回复
我用过winio做程序,32的不知道,但是……反正我不是你这么用的,你直接把他当成一个DLL来用啦……这样真的能行么……

#include "WinIo.h"
#pragma comment( lib, "WinIo.lib" )

InstallWinIoDriver( "./winio.sys", false );
InitializeWinIo();
//读写应用……
ShutdownWinIo();
RemoveWinIoDriver();
这些函数在WinIo.h里有声明的……可以去搜搜winio编程用法,很多资料的

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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