Visual Studio 2008でVisual Studio 6を使用してコンパイルしたC++静的ライブラリ(.lib)を使用することはできますか?Visual Studio 2008でVisual Studio 6のコンパイル済みC++静的ライブラリを使用できますか?
答えて
通常のCRTのメモリ境界を保持している限り(つまり、ライブラリ関数内でメモリを割り当てた場合は、ライブラリ内から解放してください)、libの関数を呼び出して自由)。
このアプローチは、あらゆる種類のコンパイラでコンパイルされたDLLでうまく動作しますが、静的にリンクされたライブラリも大丈夫です。
はい。これには何の問題もないはずです。上記のgbjbaanbは、メモリを気にする必要がありますが、VS2008はそれでも動作します。 CLRと(管理された)コードを混ぜようとしていない限り、可能であれば、私はそれに反対することをお勧めします。しかし、生のCまたはC++コードについて話しているなら、確かに動作します。
正確に使用する予定はありますか? (この図書館には何がありますか?)すでに試したことがありますか、問題があるのですか、それとも何かを稼ぐために時間を浪費する前に確認していますか?
私はちょうどそれを働かそうとしている時間の束を無駄にする前に尋ねています。私はコンパイルされた.libライブラリとそれを使用するのに必要なヘッダーファイルしか持っていないので、ライブラリ全体を再コンパイルすることはできませんでした。 –
確かにうまくいくでしょう。
VS2008のどこにリファレンスをコーディングするか尋ねていますか?
の場合は、プロパティページの「プロパティ」の「プロジェクタ - >リンカ - >入力」に移動します。 "追加の依存関係"を探し、そこに.LIBを記述します。
proj props - > Linker - > Generalに移動し、 "Additional Library Directories"でlibsパスをコーディングします。
それはそれを行う必要があります!
答えが「いいえ」だった場合があります。私たちがVS6からVS2k5に移動したときに、メモリモデルが変更され、CRTの機能が異なっているため、すべてのライブラリを再構築する必要がありました。
私のポイント - lib内のすべてのCRTコールを保持すれば問題はありません。リリースとデバッグの混在の間でさえもビルドされます。 libの中のCRT fnを呼び出して、メモリを外部に渡してから、あなたのアプリにそれを操作させて、問題を予測させてください。簡単なカプセル化が答えです。 – gbjbaanb
私はあなたがメモリ割り当ての意味を理解していますが、VS2K5はVS6ライブラリを使用することを拒否しました。それは2年前のことだったので、それが私に与えた正確なエラーは私が覚えていないことです。私たちは何年も再コンパイルされていないライブラリを追跡し、VS2K5で再構築する必要がありました。 –
本当に依存しています。 libは、メモリがまっすぐなWin32メソッド(CoTaskMemAllocなど)によって管理されるか、呼び出し元が呼び出し先によって割り当てられたメモリを解放しない、またはその逆の場合にのみ 'extern "C関数を公開しますか?あなたはVS 6以降はあまり変わっていない基本ライブラリに頼っていますか?もしそうなら、あなたは大丈夫でしょう。
見るべき2つの基本的なことがあります。サードパーティのライブラリで使用されるグローバル変数の変更、サードパーティのライブラリで定義されている構造体、クラスなどの構造の変更例えば、CRTメモリアロケータは2つのバージョン間で隠れたアロケーション管理構造を変更した可能性があります。したがって、ライブラリの1つのバージョンでメモリを割り当て、別のメモリを解放するとクラッシュする可能性があります。
また、C++クラスをインターフェイスで公開し、MFCなどのMSランタイムライブラリを使用すると、クラスレイアウトがVS 6とVS 2008の間で変更される可能性があります。つまり、メンバー/フィールドへのアクセスクラス上で間違ったことが起こり、予期しない結果が生じる可能性があります。 .libがどんな容量でもMFCを使用するならば、おそらくホースしているでしょう。 MFCは大量のグローバルを定義し、内部的に使用し、MFCインフラストラクチャがホスティング環境で変更された場合(VS 6、BTW以降に大きく変更されています)、.libの操作によるMFCグローバルへのアクセスはすべて失敗します。
MFCヘッダーでどのような変更が行われたのか正確には調べていませんが、異なるVSバージョンでコンパイルされたMFC/ATLベースのクラスバイナリ間で予測できない動作が発生しています。
これらの問題に加えて、実行時ライブラリで定義された静的グローバル変数に依存するstrtok()のような関数にはリスクがあります。私は確信していませんが、私はそれらの静的変数は、マルチスレッドのCRTで作成されたスレッドでシングルスレッドのCRTを期待しているクライアントを使用する場合、正しく初期化されないことがあります心配です。詳細については、_beginthread()のドキュメントを参照してください。
- 1. Visual Studio 2008でコンパイルしたC++ dllをVisual Studio 2005で使用できますか?
- 2. Visual Studio 2010は、Visual Studio 6のようにC++でインラインアセンブリをコンパイルしますか?
- 3. Visual Studio 6とVisual Studio 2008を同じマシンにインストールできますか?
- 4. C#、Visual Studio 2008
- 5. Visual Studio 2008でC#4.0を使用できますか?
- 6. Visual Studio 2008/Visual C++ 2008 Expressを使用したCの学習
- 7. Visual C++ 6でビルドされたアプリケーションは、Visual Studio 2008で構築されたDLLを使用できますか?
- 8. Visual StudioでOpenCV 2.4静的ライブラリを使用するには?
- 9. Visual Studioのコンソールに組み込まれたVisual Studioのコンパイル済みC#ソリューションを実行します
- 10. Visual Studio 6でVisual Basic 6とVisual Basic
- 11. Visual Studio 2008のVisual Studio 2008でVB.NETでWSPを構築する
- 12. Visual Studio 2012の静的ライブラリとのリンクエラー
- 13. Visual Studioのネストされた静的ライブラリ?
- 14. Visual Studio 2008 SP1:
- 15. Visual Studio 6.0からVisual Studio 2008
- 16. Visual Studio 2008デュアルコンパイル
- 17. Visual Studio 2008でjsoncppを使用する
- 18. Visual Studio 6ライブラリをVisual Studio 10に変換
- 19. Visual Studio 2008クラスダイアグラムデザイナ
- 20. Visual Studio C#Excelライブラリ
- 21. Visual Studio 2010でEntity Framework 6を使用できますか?
- 22. Visual Studio 2008ヘルプシステム
- 23. TabControl C++のMFC Visual Studio 2008
- 24. Visual Studio 2008でMySQLを使用
- 25. Visual Studio 2008 IDEでflexunitを使用
- 26. Visual Studio 2008とSilverlightでSQLiteを使用
- 27. エディタVisual Studio 2008
- 28. Microsoft.Build(Visual Studio SDK)でC#6をコンパイルする際のエラー
- 29. visual studio 2008テーマ
- 30. スタティックコードアナライザー:アンマネージドC++ Visual Studio 2008
VS2008でC++で使用できるかどうか、C#やVB.NETなどの管理言語から呼び出すことができるかどうかは疑問です。後者の場合は、質問を編集して明確にします。 –