C++でのDLL利用について
http://1c3.world.coocan.jp/wiki/index.php?%A5%B3%A5%F3%A5%C8%A5%ED%A1%BC%A5%EBDLL%A4%F2%BA%EE%A4%ED%A4%A6#p92ca3d9
こちらのページで公開されている、pc-op-rs1-control.dllを使って、
自作プログラムを製作しようと考えています。
開発環境はVisual C++です。
上記ページのAPIリファレンスを見ると、
例えばドライバをオープンする関数は
PCOPRS1CONTROL_RET Open(int port_no)
というように書かれています。
そこで私の書いてみたプログラムは以下のとおりです。
#include <Windows.h>
typedef PCOPRS1CONTROL_RET(WINAPI *OPEN)(int port_no);
int _tmain(int argc, _TCHAR* argv[])
{
HINSTANCE lib;
lib = LoadLibrary(TEXT("pc-op-rs1-control.dll")); //dllはEXEファイルと同じディレクトリに配置
if (lib == NULL){
// ここにはエラーメッセージを入力してください
printf("dll呼び出しエラー\n");
return -1;
}
OPEN Open = (OPEN)GetProcAddress(lib,"open");
printf("実行開始");
PCOPRS1CONTROL_RET open = Open(7);
if(open == PCOPRS1CONTROL_RET_OK)
printf("Open成功");
bool End = FreeLibrary(lib);
return 0;
}
こうすると、
PCOPRS1CONTROL_RETという型が宣言されていない(?)ので、
コンパイルが通りません。
試しに
typedef void(WINAPI *OPEN)(int port_no);
としてみたりすると、
Open()を実行した瞬間死にます。
pc-op-rs1-control.dllのソースを見ても、
PCOPRS1CONTROL_RET型についての明記が見当たらないような気がするのですが、
どうしたらいいのでしょうか?
お礼
アドバイスありがとうございました。今回入手したゲームはDirect Xだけでは起動できず、ビデオカード(グラフィック・アクセラレーター)が必要になる事が解かりました。私のPCはノート型(ソニー PCG-XR1G)なので、PCカードでしか対応できないと思うのですが、未だに該当商品を見つけられずにいます。再び新規の質問でGlideやGeForceに相当するPCカードが存在しないものかを広くお尋ねしてみますので、もしご存知でしたら御回答いただければ幸いです。