これは複雑な状況です。 exeの読み込みは、プログラムまたはdllコードが実行される前に約10分遅れます。プログラムとdllはともに社内で書かれています。以前のバージョンのdllを使用すると、問題が緩和されるようです。私が決定しようとしているのは、プログラムにdllを添付するためにコンパイラが生成したコードで何が起こり、そのプログラムをロードするのに数分かかることがあります。プログラムとDLLはVC++ 6.0を使用して作成されています。これは約1年前のdllリビジョンの後に起こりましたが、リビジョンはdll初期化/スタートアップコードとは関係ありませんでした。これはすべてのコンピュータで発生するわけでも、特定のコンピュータでDLLを使用するすべてのプログラムに影響するものでもありません。失敗のパターンはないようです。プログラムコードが実行される前に、静的な.libを介してDLLにリンクされているプログラムではどうなりますか?
-1
A
答えて
0
"プログラムにdllを添付するためにコンパイラが生成したコードはどうなりますか?"
ほとんど何もありません。コンパイラが生成したコードはEXEではなく、DLL内に存在します。 C++ランタイムがロードされていることを確認し、グローバルオブジェクトのコンストラクタを呼び出し、DllMain
を呼び出すという3つの重要なタスクがあります。生成されたコードの最後の2つの部分はのコードを呼び出すだけです。生成されたコード自体はナノ秒で実行されます。
関連する問題
- 1. プログラムは静的にライブラリにリンクされていますが、実行するにはまだDLLが必要です
- 2. DLLが複数回リンクされている場合、エクスポートされたグローバル変数はどうなりますか?
- 3. __statと__fstatは静的にリンクされているのはなぜですか?
- 4. ScikitラーニングAPIを介したXGBは、GPUで実行するようにコンパイルされていますが、GPUで実行されていないようです。
- 5. Pythonプログラムが期待どおり実行されていない
- 6. DLLが使用されていないときに依存DLLなしで実行するにはどうすればいいですか?
- 7. Spring AuthenticationProviderが静的リソースまたはイメージリソースに対して実行されないようにするにはどうすればよいですか?
- 8. 数学ライブラリは静的にリンクされていますか?
- 9. リンクされたSQLサーバーが実行されているかどうかをチェック
- 10. runAllManagedModulesForAllRequests = "true"でも静的コンテンツに対してImageResizingModuleが実行されない
- 11. "実行時に動的にリンクされていますが、静的に認識しています" - ロードされた.soファイルを制御する方法
- 12. プログラムはコンパイルされますが、実行していないようです。
- 13. .dataまたは.bssセクションに格納されている静的または大域データを、プログラムの実行前にロードする必要がありますか?
- 14. 実行ファイルがアプリケーションプロジェクトと静的にリンクされているライブラリよりも小さい理由
- 15. スリープする前にスクリプトが実行されていない
- 16. なぜbind_resultが実行される前に実行されるのですか
- 17. callback()が実行されないとどうなりますか?
- 18. Javaでは、静的なクラスメンバーはプログラム間で共有されていますか?
- 19. visual C++ 2008:.dllと.libファイルが生成されていない
- 20. Javascriptは動的か静的にHTMLにリンクされていますか?
- 21. fadeIn/FadeOutが実行されている間に他のスクリプトが実行されないようにします
- 22. Eclipseのyocto autotoolsプロジェクトに静的なlibをリンクするには
- 23. 認証前にonAuthorizationが実行されているのはなぜですか?
- 24. shell32.dll; ShellExecute()がPowerbuilderで実行されていない11.5
- 25. 別のプログラムが実行されているときにプログラムが起動しないようにする(Windows)
- 26. opencvに静的にリンクされた実行ファイルのサイズを小さくする
- 27. 管理されたDLLをアンマネージドLibにリンクする
- 28. Webアプリケーションを介してレコードがSQL Serverに挿入されるたびに、winformsプログラムが実行される
- 29. メモリ内で、セクションがプログラムか静的なlibかどうかをどのように伝えますか?
- 30. 静的にリンクされたプログラムのMMUとgccのデフォルトリンカファイルについては、
アプリケーションやDLLは起動時に多くのことを行うことができます。 'DllInitialize()'またはグローバル/静的オブジェクトのコンストラクタでそれらをチェックしてください。 'main()'(あるいは 'WinMain'の始めに' MessageBox() ')の先頭にいくつかのロギングを入れて、メインがいつ実際に起動したかを見ることができます。 – axalis
その10分間(dllコードが呼び出されたとき)に何が起こるのですか?アプリはフリーズしていますか?それとも別のことをやっているの?それをどのようにテストしましたか( 'DllMain'にいくつかのコードを追加しました)? DLLはアプリケーションにリンクされていますか(DLLが存在しない場合、アプリケーションは起動しません)、またはLoadLibrary経由でロードされているか、遅延ロードされています(https://msdn.microsoft.com/en- us/library/151kt790(v = vs.71).aspx)? – CristiFati
タイトルはかなり混乱しています。 _static_ .libは、** DLLに**リンクしていないことを意味します。 DLLを使用する場合は、_import_ .libを使用します。 – MSalters