質問に追記をしたいので新設してもう一度質問をしました。
プラットフォームはVS.NET2005でC++で記述しています。 OSはWindows XP SP3です。
自分で作成したDLLを読み込むためにLoadLibrary関数でDLLを読み込んだハズなんですがエラーになり、エラー値126で、指定したモジュールがありません と出ます。
たしかに指定したフォルダにDLLがあるはずなんですが。
DLLの方は実は.NET2003で作られたDLLです。
しかし2003でも2005でも関係なくDLLは読み込まないようです。 ただ、.NET2003からコンバートしたソリューションだと正常にdllファイルを読み込んでいます。 NET2005で新規作成でプロジェクトを作り、そこの.cppファイルからdllファイルを読み込ませようとすると失敗します。
一つ気になるのが、Microsoftのホームページの以下のアドレスでその事に関する対策が載っているようです
http://support.microsoft.com/kb/891401/ja
この問題を解決するには、最新バージョンの Windows スクリプト ホストを使用してコンピュータを更新します。これを行うには、次のマイクロソフト Web サイトを参照してください。
解決方法としてこのように載っていますが、リンク先がありません。
何かしらどこかにリンク先がないでしょうか?
もしくはこの問題を解決できる方法はありませんか?
質問でもなんでもいいので解答ください。 m( )m
どうかよろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
コンバートしたプロジェクトでうまく読み込めるなら、そのプロジェクトで作成した実行ファイルとdllファイルを、開発環境が入っていないマシン(必要であればVirtualPCやVMWareなどで作成して)でちゃんと動作するか確認してみては?
ランタイムや他のdllが必要であれば、それらをインストールやコピーしないと動作しなくなるので、必要なものが確認できます。
あと、コンバートしたプロジェクトと新規のプロジェクトの違いというと、UNICODEを使用するか否かという部分が大きいと思いますが、その辺は影響しませんか? UNICODEを使用するプロジェクトであれば、LoadLibraryに渡すファイル名もUNICODEにする必要があります。
もう1つ、チェックするとすれば、dllファイルの場所をフルパスで記述してみるとか。
以前、読み込むdllの場所によって、セキュリティの問題が発生したことがあって、何らかの対策が追加されているかもしれません。
この回答への補足
>LoadLibraryに渡すファイル名もUNICODEにする必要があります。
Unicode文字に対応するということでしょうか?
プロジェクトのプロパティでUnicode文字からマルチバイト文字に変更して
デバッグをやっています。
Unicode文字じゃないとエラーが多く出て実行できないんでマルチバイト文字セットを使用するにしました。
DLLでもそうです。
No.2
- 回答日時:
提示されたリンクの内容は、
「アプリケーションを作成しようとすると、アプリケーションが正常に作成されず、次のようなエラー メッセージが表示されることがあります。」
なので、VisualStudioが正常に動作しない場合の対処方法です。
今回の問題とは違う内容でしょう。
dllファイルの読み込みに失敗する場合、そのdllファイルだけでなく、dllファイルが読み込む別のdllファイルの存在の有無も影響します。
Depnedency Wakerなどで依存関係をチェックしてみてはいかがでしょうか。
解答ありがとうございます。
dependswalkerで調べてみたところ、そのDLLにリンクしているDLLの一部がない(EFSADU.DLL WER.DLL IESHIMS.DLL)と言われますが.NET2003では動いてますよね^^; DLLリンクに問題ないDLLでもやはり読み込みません。
.NET2003のRuntime(CRT)が入っていないと指摘されたことがあるのですが
そうなのでしょうか?
NET2003のRuntime(CRT)というのは今は調べているところです。
No.1
- 回答日時:
script 5.7で良いなら、マイクロソフトからダウンロード。
http://support.microsoft.com/kb/949140/ja
ざっと追っかけた感じだと、regsvr32で済みそうな。
マイクロソフトでダウンロードして試したら、もう必要ないというエラーがでました。
どうやらもうアップデートされているようです。
regsvr32でDLLをどのようにするのでしょうか?
regsvr32はDLLをレジストリ登録して使用するとあるのですが。
自分が使っているDLLはレジストリ登録は必要ない状況です。
あと説明の追記をしておきます。 DLL関連の追記です。
DLLは MFC・ATCは使っていません。 .FrameWorkもです。
利用側のEXEも使用していません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンパイルするときに、ファイ...
-
VB.NETで他のプロジェクトで作...
-
VS2010 ProductVersion 変更
-
VB6.0 オブジェクトを一覧で表示
-
エラーの原因は?「この関数の...
-
VC++ 2005 Intellisenseを更新....
-
sys/ipc.h や sys/shm.h
-
VisualBasicを保存するときにで...
-
無料でCのコンパイラを使える...
-
Visual Stadio2008 Releaseビル...
-
VC++でexeファイルが作成できま...
-
ユーザー名・作成者について(Vi...
-
VB6で、非表示モジュール(?)の...
-
VBのコンパイルしてときにbinフ...
-
static宣言の共有
-
vb.netでレジストリ操作
-
EXEをつくるとレジストリが...
-
C++のコンパイラについての質問
-
Indy9のインストール方法
-
C言語初心者の質問失礼します。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで他のプロジェクトで作...
-
ACCESSのEXEを作るのは可能...
-
エラーの原因は?「この関数の...
-
コンパイルするときに、ファイ...
-
VB.NETでActiveX(OCXファイル)作成
-
ソースから参照しているOCXの一...
-
C#のクラスをVB.netで使用したい!
-
VB6 exeファイルのプロパティの...
-
他の.CPPファイルに定義した関...
-
VB6で、非表示モジュール(?)の...
-
VC++でexeファイルが作成できま...
-
Visual Studioでプロジェクトが...
-
VBのコンパイルしてときにbinフ...
-
プリコンパイル?
-
libssh2のインクルード
-
Visual Stadio2008 Releaseビル...
-
VisualBasicを保存するときにで...
-
sys/ipc.h や sys/shm.h
-
VBソースを表示できない。
-
VB6 SP6 アイコンとフォームに...
おすすめ情報