
現在Cabの解凍をするプログラムを作っています。
Cabファイル内のファイル数を取得するために、
int WINAPI CabGetFileCount(LPCSTR szArcFile);
というAPIを使おうとしているのですが、
実行中に、デバッグエラーが出ます。
エラーメッセージ
The value ESP was not properly saved across a function call.
This is usually a result of calling a function declared with one calling convention pointer declared with a different calling convention.
ソースは以下のものです。
typedef bool (*TFUNC)(LPCSTR);
void関数名(HWND hWnd)
{
HINSTANCE hCab=NULL; //cab32.dllのインスタンスハンドル
TFUNC DllFunction;
intFileCount;
//cab32.dllのロード
hCab = LoadLibrary("cab32.dll");
if(hCab == NULL)
{
MessageBox(hWnd,"cab32.dllがありません。","エラー",MB_OK);
return;
}
DllFunction=(TFUNC)GetProcAddress(hCab,"CabGetFileCount");
FileCount = (*DllFunction)("test.cab");
FreeLibrary(hCab);
}
(DLL使用テストのソース)
コンパイラーは"VC++6.0"
OSはWin2Kになります。
わかるかたよろしくお願いします。
No.3ベストアンサー
- 回答日時:
>それは
>"typedef"にということでしょうか?
>そこにWINAPIをつけるとコンパイル時にエラーが出ることを確認しています。
(^^;;
#1の方の定義の仕方が間違ってるんですけど。
正しくは
typedef int (WINAPI * TFUNC)(LPCSTR);
と括弧の中に入れる必要があります。
また、"WORD WINAPI CabGetVersion(VOID);"
は利用することができるのですが、これの場合はWINAPIは不要で動きました。
WINAPIというか__stdcallは、引数のスタックへのつみ方を定義するキーワードです。なので、voidの場合は動いたんでしょう。
No.2
- 回答日時:
ちゃんとWINAPIもつけました?
この回答への補足
それは
"typedef"にということでしょうか?
そこにWINAPIをつけるとコンパイル時にエラーが出ることを確認しています。
また、"WORD WINAPI CabGetVersion(VOID);"
は利用することができるのですが、これの場合はWINAPIは不要で動きました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- Windows 10 Windows Updateが動作しません 7 2022/08/12 16:26
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- 化学 生化学の問題です シトクロームCが含む金属はどれか. a Ca b Zn c Cu d Fe これの 0 2023/01/27 17:04
- 数学 中2数学の「平行四辺形の2組の対角はそれぞれ等しい」ことの証明を自分なりに考えてみたのですが、これで 3 2023/06/21 18:25
- Windows 10 IT初心者です! powershellで以下のようなエラーが出ました オブジェクト参照がオブジェクト 1 2023/05/17 11:30
- 就職 就職活動の適性検査で今度Web-CABを受験する者です。試験中に少し考えてもわからない問題が出てきた 1 2022/06/16 20:58
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
コンパイルできません。
-
バッチからsqlplusの接続エラー...
-
適切な変換関数が存在しない???
-
Excelのエラーで困ってます。
-
配列の初期化時に出たエラーの...
-
”wchar_t*型は渡せない”という...
-
「指定したフォルダにあるファ...
-
Arduinoに関する質問
-
visual studio 2019において、...
-
error C3867 関数呼び出しには...
-
fortranでプログラムを実行する...
-
デバッグ中のエラーのことで教...
-
VBAでファイルを開くプログラム...
-
pythonでエラーの出た場所から...
-
自己参照構造体のtypedef宣言と...
-
フォームの作成中にエラーが発...
-
左側がクラス、構造体、共用体...
-
ビルド失敗 指定されたファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
ビルド失敗 指定されたファイ...
-
fortranでプログラムを実行する...
-
visual C++ でビルドの中止がで...
-
適切な変換関数が存在しない???
-
VB2008で定数に色の設定をした...
-
HEWを使用しているのですが、こ...
-
コンパイルできません。
-
バッチからsqlplusの接続エラー...
-
Visual Studioのstrcpy_sについて
-
DLL関数を使ったプログラム
-
キーの自動入力
-
RightとLeft関数のライブ...
-
BC30002: 型 'ListItem' が定義...
-
LPCWSTRとchar
-
error C3867 関数呼び出しには...
-
デバッグ中のエラーのことで教...
-
sys/time.hのインクルードがで...
おすすめ情報