◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

C++相談室 part130 [無断転載禁止]©2ch.net ->画像>4枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1490917669/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

ID:MaD+cEa1dのレス一覧:


811片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 20:49:13.06ID:MaD+cEa1d
>>810
importとexportを間違ってるよ。
813片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 22:02:10.86ID:MaD+cEa1d
まずは、出来たdllをダンプしてみな。関数型にはWINAPIが必要だよ。
815片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 22:06:40.85ID:MaD+cEa1d
こういう場合は関数ポインタ型をtypedefしたら楽だよ。
817片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 22:12:49.52ID:MaD+cEa1d
typedef int (WINAPI *MYFUNC)(int, int);
819片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 22:14:01.35ID:MaD+cEa1d
dumpbinというダンプツールがあるから、それを使ってdllの情報をダンプする。
820片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 22:16:16.73ID:MaD+cEa1d
どうやってdllを作った? 初心者だから作り方間違ってる可能性がある。
822片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 22:21:21.65ID:MaD+cEa1d
>>821
dllの場合はWinMain要らない。ダンプは専用のコマンドプロンプトで行う。ってことは、コマンドプロンプトの使い方も勉強しないといけない。
823片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 22:22:37.56ID:MaD+cEa1d
DLLの場合はDllMainだね。
825片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 22:25:41.24ID:MaD+cEa1d
あっ、それからC++からC言語の関数を定義・参照するにはextern "C"を付けないといけない。
826片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 22:31:08.38ID:MaD+cEa1d
C++関数のシンボル名は「mangling」によって変な名前になり、コンパイラーによって違うから(標準化されていない)、DLLでは使いづらいので、C言語関数にすることが多い。
827片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 22:39:22.35ID:MaD+cEa1d
DLL内部の輸出関数にextern "C"を付けてC言語関数にする。
関数ポインター型をtypedefする。
DLLをダンプして関数シンボル名を確認する。
829片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 22:43:26.89ID:MaD+cEa1d
コンパイラーによって違うが、C言語関数が__cdeclのときは、そのシンボル名は先頭に下線が付き、__stdcallのときは関数名そのままだったかと。
830片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 22:46:12.04ID:MaD+cEa1d
>>828
C++でDLL関数を参照するときは、DLL関数がC言語関数でないと、シンボル名がややこしくなって、GetProcAddressが難しくなるよ。ダンプすればシンボル名が確認できる。
832片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 22:54:29.77ID:MaD+cEa1d
スタートメニューのVSの項目に、「なんちゃらコマンドプロンプト」というのがあるはずだ。
ソイツを起動すると黒い画面が出て来て、キーボードで「CD」コマンドで対象のフォルダに移動。
dumpbinに適当なコマンドライン引数を付けてEnter。
833片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 22:56:32.59ID:MaD+cEa1d
>>831
DllMainにも__stdcallが必要。
834片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 22:59:03.92ID:MaD+cEa1d
>>831
関数の引数と戻り値がC言語関数に見えれば中身C++でもOkay。
836片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 23:00:31.80ID:MaD+cEa1d
__stdcallやWINAPIなどを付けなければ、デフォルトで__cdeclになる。
837片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 23:02:59.40ID:MaD+cEa1d
コンパイラーによってはデフォルトの呼び出し規約を変更できるかも知れない。
838片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 23:07:11.36ID:MaD+cEa1d
複数の関数を、extern "C" { ... } で囲ってもいいし、関数の直前にextern "C"を付けてもいい。
842片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 23:17:50.12ID:MaD+cEa1d
>>840
Unmanaged C/C++では、慣習として、公開するヘッダーファイルは自分で書かないといけない。
それは公開する範囲を決める意味で重要な作業になる。
843片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 23:25:33.39ID:MaD+cEa1d
WinMainやDllMainなど以外で自分で作った関数については、WINAPIよりもAPIENTRYを使うのがマナー。
846片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 23:32:25.59ID:MaD+cEa1d
<windows.h>の中身を覗いてみると、Win32APIの流儀が見えてくる。時間泥棒かも知れないが、それが面白い。
847片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 23:35:11.33ID:MaD+cEa1d
Boostという準標準ライブラリ群があって、Boost.DLLはその一部。APIENTRYマクロはWINAPIマクロの別名。
848片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 23:39:27.90ID:MaD+cEa1d
面倒なのが嫌なら最初からC#使え。C++は素人が来るところではない。
850片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)2017/07/19(水) 23:50:31.02ID:MaD+cEa1d
で、問題は解決したか?

レス:1-200 201-400 401-600 601-800 801-1000 ALL

このスレへの固定リンク: http://5chb.net/r/tech/1490917669/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「C++相談室 part130 [無断転載禁止]©2ch.net ->画像>4枚 」を見た人も見ています:
C++相談室 part152
C++相談室 part149
C++相談室 part124
C++相談室 part158
C++相談室 part155
C++相談室 part150
C++相談室 part126
C++相談室 part151
C++相談室 part153
C++相談室 part154
C++相談室 part148
C++相談室 part156
C++相談室 part157
C++相談室 part164
C++相談室 part165
C++相談室 part159
C++相談室 part161
C++相談室 part163
C++相談室 part162
C++相談室 part166
C++相談室 part137
C++相談室 part131
C++相談室 part134
C++相談室 part139
C++相談室 part137
C++相談室 part145
C++相談室 part135
C++相談室 part143
C++相談室 part132
C++相談室 part147
C++相談室 part144
C++相談室 part140
C++相談室 part138
C++相談室 part142
C++相談室 part141
C++相談室 part117
C++相談室 part133
C++相談室 part146
C++相談室 part136
C++Builder相談室 Part21
0からの、超初心者C++相談室
Cygwin + MinGW + GCC 相談室 Part 8
Cygwin + MinGW + GCC 相談室 Part 3
C++相談室 part129 [無断転載禁止]©2ch.net
C++相談室 part123 [無断転載禁止]©2ch.net
C♯相談室 Part20
C言語相談室(上級者専用)
MFC相談室 mfc22d.dll
Mac G5 中古買入相談室
MFC相談室 mfc23d.dll
河田さんによる人生相談教室
C#, C♯, C#相談室 Part75
C#, C♯, C#相談室 Part79
C#, C♯, C#相談室 Part93
C#, C♯, C#相談室 Part78
自営業 悩みごと相談室 40
自営業 悩みごと相談室 16
C#, C♯, C#相談室 Part91
C#, C♯, C#相談室 Part94
C#, C♯, C#相談室 Part90
C#, C♯, C#相談室 Part91
0からの、超初心者C#相談室
自営業 悩みごと相談室 52
C#, C♯, C#相談室 Part92
01:16:31 up 117 days, 2:15, 1 user, load average: 14.67, 15.54, 15.96

in 0.022282123565674 sec @0.022282123565674@0b7 on 081214