5

このプロジェクトは、LoadLibrary()を呼び出してdllファイルをロードする単一の.cppファイルで構成されています。

Microsoft Visual Studio 2012のコマンドプロンプトで次のコマンドを実行すると、次のようになります。

cl /nologo Test.cpp

すべてが正常に動作します。

一方、単純なVisual C ++プロジェクトを起動し、ファイルを追加してそこからコンパイルすると、LoadLibrary()呼び出しがコード126で失敗します。指定されたモジュールが見つかりませんでした。

コマンドラインから作成した.exeは、VisualStudioで作成したものの2倍以上のサイズです。ですから、静的リンクが行われていると思います。

.dllファイルは問題なく、.exeファイルと同じディレクトリにあります。

4

3 に答える 3

7

私はそれを考え出した。

デフォルトでは、clコマンドはマルチバイト文字セットを使用します。Visual Studioでセットアップされた新しいプロジェクトは、ユニコード用に構成されています。

于 2012-10-06T15:10:23.227 に答える
2

Loadlibrary関数がエラー126で失敗した場合、ライブラリが見つからなかったことを明確に示しています。したがって、Loadlibraryの引数にフルパスを適用することで、この関数を確認できます。それが機能する場合は、システム環境変数のPATH変数にそのパスを設定します。Loadlibrary apiは最初にそのフルパスを見つけるため、そのパスでライブラリが見つからなかった場合は、システムの標準PATHで検索します。

于 2012-10-08T06:13:19.167 に答える
0

お使いのオペレーティングシステムは64ビットですか?

私はwin7(64ビット)でこの状況に遭遇しましたが、VS、photoshop(64ビット)、matlab-2011a(64ビット)では発生しませんでした。プロンプトは同じです:Loadlibraryがエラー126で失敗しました...

私の知る限り、「機能に不可欠なレジストリエントリがありません。具体的には、アプリケーションがOpenGLアクセスを要求するたびに、AMDのatig6pxx.dllが起動します。次に、HKLM \ SYSTEM \ CurrentControlSet \ Control \ Class {4d36e968-e325-11ce-bfc1-08002be10318} \ 0000内をピークし、指定されたとおりにOpenGLコンポーネントをロードします。 OpenGLVendorName(64ビット)またはOpenGLVendorNameWow(32ビット)。」

このブログを参照できます(<a href="http://www.withinwindows.com/2012/03/18/quick-fix-for-amds-opengl-on-windows-8/" rel="nofollow" >ここにリンクの説明を入力してください)、それは解決策を提供します。私は試しましたが、うまくいきました。または、このフォーラムを参照できます(ここにリンクの説明を入力してください)。</ p>

私はそれがあなたの問題を解決できることを願っています、運がいいです:)

于 2012-10-28T16:50:18.683 に答える