SSブログ

VC++のエラー #126について [覚え書き]

2011年10月19日(水)

VisualStudio2010Expressでは, DLLのロードができて
VisualStudio2008Pro or VisualStudio2005 Standardでは
DLLのロードに失敗する件について

(::LoadLibrary()で, NULLが返る, ::GetLastError()の戻り値 : #126)

動作を見てみる感じではライブラリが足りないように見えました.
で, プロジェクトを新規作成したときのデフォルトのライブラリの設定を
見てみると, ...
VisualStudio2008で生成したWin32コンソールアプリでは
空っぽでした.

VisualStudio2010Expressで, 新規作成時, どうなのかは試行していないので
分かりませんが, OpalKellyのサンプルが2010用のプロジェクトになっているため
サンプルプロジェクトがそのまま使えます.
それで, ライブラリのところを見てみると,
kernel32.libをはじめ, 普通にWindowsアプリで使用するライブラリは
一通り入っていました.

設定する画面は, 下記でした.
(以下は, 明日の仕事のときに参照するための覚書です.)


VisualStudio2008で確認したところ
[プロジェクト(P)]→ "xxxxx(プロジェクト名)のプロパティ"を選び,
プロパティページが表示されたら,

「リンカ」の「入力」を選択する.

追加依存ファイルに, 下記のファイルを追加する.
("継承の値"に表示されているライブラリファイルをすべて)

kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comdlg32.lib
advapi32.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
odbc32.lib
odbccp32.lib
%(AdditionalDependencies) <--- マクロ設定

これで, VisualStudio2008では, DLLのロードエラーは出なくなった.
2005でも同様と思われる.

ちなみに, プロジェクトの新規作成では
"win32コンソールアプリ", "空のプロジェクト"にして
必要なソースファイル(ヘッダファイルも含め4個)を追加した.

以上.

これで, 明日の仕事では, FPGAの設計じゃないところで
引っかからずに仕事進めることができそうです.
(あとは, ちゃんと眠って, ちゃんと起きること!!)

では, 改めて
今日も穏やかな日になりますように.

nice!(3)  コメント(2)  トラックバック(0) 

nice! 3

コメント 2

ksakamo

↑は, 間違いでした.
"プロジェクトのプロパティの設定を変更する"っていうのは
その通りなのですが.

変更すべきプロパティは
「構成プロパティ」→[全般]の"プロジェクトの規定値"にある
[文字セット]でした.

「UNICODE文字セットを使用する」

「マルチバイト文字セットを使用する」

に変更してリビルドしたら, DLLモジュールをロードできる
exeファイルができました.

by ksakamo (2011-10-19 12:38) 

ksakamo

サザエ様, じゅりあん様, タッチおじさん様
nice!つけていただいて, どうもありがとうございます.
とても嬉しいです.

by ksakamo (2011-10-20 22:43) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0