問題タブ [vc8]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - VC9とVC8のlibの互換性
(元の質問はそこで尋ねられました:http ://www.ogre3d.org/phpBB2/viewtopic.php?t = 44832 )
「vs2008(VC9)ですべてをビルドしたいのですが、PhysX SDKはvs2005(VC8)でビルドされています。これにより、すべてのvc9コンパイル済みライブラリを使用してこのvc8ライブラリと組み合わせて使用すると、問題が発生しますか?」
VC8で生成された.libファイル(および.dll)を使用してvc9コンパイル済みexeに含める前日に、コンパイラーが.libファイルを開くことができなかったと答えました。
さて、他の人は問題なくこれをしたと答えました。
vc9とvc8の間のlibの互換性に関する情報が見つかりません。
だから...助けて?
visual-c++ - VC8 (VS2005) から VC9 (VS2008) への移植の問題は何ですか?
私は、VC8 (VS2005) でビルドおよびテストされた非常に大規模で複雑なプロジェクト (実際には、119 の「プロジェクト」で構成される「ソリューション」であり、そのほとんどが DLL) を継承しており、それを VC9 に移植するタスクがあります。 (VS2008)。
私が使用した移植プロセスは次のとおりです。
- VC8 .sln ファイルをコピーし、名前を VC9 .sln ファイルに変更します。
- すべての VC8 プロジェクト ファイルをコピーし、名前を VC9 プロジェクト ファイルに変更します。
- すべての VC9 プロジェクト ファイル、s/vc8/vc9 を編集します。
- VC9 .sln、s/vc8/vc9/ を編集します。
- VS2008 で VC9 .sln をロードし、IDE にすべてのプロジェクト ファイルを「変換」させます。
- 適切なビルドが得られるまで、コンパイラとリンカーのエラーを修正します。
これまでのところ、最後のステップで次の問題に遭遇しました。
1) 装飾された名前の計算方法が変更され、名前が切り捨てられました。
これは単なる警告ではありません ( http://msdn.microsoft.com/en-us/library/074af4b6.aspx )。この警告でビルドされたライブラリは、他のモジュールとリンクしません。MSDN に記載されている解決策を適用することは簡単ではありませんが、実行可能でした。この問題については、「VC9 (MSVC 2008) で許可されている修飾名の長さを増やすにはどうすればよいですか?」で個別に対処しました。
2) イテレータにゼロを代入できない変更。これは仕様によるものであり、以前は許可されていたこれらのコーディング エラーを見つけて修正するのはかなり簡単でした。イテレータにゼロを代入する代わりに、値 end() を使用します。
3) for ループのスコープは、ANSI 標準に準拠するようになりました。別の簡単に修正できる問題。
4) プリコンパイル済みヘッダーに必要なスペースが増えます。場合によっては、さらに多くのスペースが必要でした。/Zm999 を使用して最大の PCH スペースを提供することになりました。PCH のメモリ使用量が再び増加した場合は、PCH を完全に使用せずに、ビルド時間の増加に耐える必要があると思います。
5) コピー ctor およびデフォルト dtor の要件の変更。テンプレート クラスでは、特定の条件下で、まだよくわかっていませんが、コンパイラはデフォルトの ctor またはデフォルトの dtor を生成しなくなったようです。これは VC9 のバグだと思いますが、他に何か間違っている可能性があります。もしそうなら、それが何であるかを知りたいです。
6) sln および vcproj ファイルの GUID は変更されませんでした。これは、私が検出できる方法でビルドに影響を与えるようには見えませんが、それでも心配です.
これらすべての問題にもかかわらず、プロジェクトは VC8 でビルド、実行、広範な QA テストに合格したことに注意してください。また、すべての変更を VC8 プロジェクトにバックポートしましたが、以前と同じように (VS2005/VC8 を使用して) ビルドして実行することができます。したがって、VC9 ビルドに必要なすべての変更は、少なくとも下位互換性があるように見えますが、回帰テストはまだ進行中です。
ここで、非常に難しい問題について説明します。VC8 プロジェクトと VC9 プロジェクトの起動シーケンスの違いに遭遇しました。このプログラムは、Andrei Alexandrescu の Book Modern C++ Designで、Loki をモデルにした小さなオブジェクト アロケーターを使用します。このアロケータは、メイン プログラム モジュールで定義されたグローバル変数を使用して初期化されます。
VC8 では、このグローバル変数はプログラム起動の最初に、モジュール crtexe.c のコードから構築されます。VC9 では、最初に実行されるモジュールは crtdll.c で、これは起動シーケンスが変更されたことを示します。起動中の DLL は、グローバル オブジェクトが統計を初期化する前にメモリの割り当てと割り当て解除を行うことで、スモール オブジェクト アロケータを混乱させているように見えます。これにより、誤った診断が行われます。プログラムの動作は実質的に影響を受けていないようですが、QA 担当者は偽の診断がそれらを通り抜けることを許可しません。
DLL をロードする前に、グローバル オブジェクトの構築を強制する方法はありますか?
他にどのような移植の問題が発生する可能性がありますか?
visual-studio - VC++ コンパイラのバージョンに応じた条件付きコンパイル
VC++ プロジェクトを Visual Studio 2005 (VC8) から Visual Studio 2008 (VC9) に移行中です。ソリューションの一部のプロジェクトでは、プロジェクト設定の [追加のライブラリ ディレクトリ] フィールドにサード パーティ ライブラリへのパスが含まれています。パスは次のようになります:
..\SomeLibrary\Lib\vc9\x86
$(ConfigurationName) を使用して "Debug" または "Release" を置き換えるのとほぼ同じ方法で、Visual Studio の "Property Page Macros" の 1 つを使用してコンパイラ バージョンを置き換えることができれば、非常に便利です。次のようなものが最適です:
..\SomeLibrary\Lib\ $(CompilerVersion) \x86
残念ながら、適切なマクロが見つかりません。
「マクロ」と言うときは、C/C++ プリプロセッサ マクロではなく、Visual Studio の「プロパティ ページ マクロ」を指していることに注意してください。私の知る限り、プロジェクト設定でプリプロセッサ ディレクティブを使用することはできません。
これを行う方法を知っている人はいますか?
php - VC8で構築されたPHP APC DLL
VC8 でビルドされた php_apc.dll のコピーを探しています。VC9 でビルドされたものを見つけましたが、ZendServer CE で入手した PHP ディストリビューションには、VC8 でビルドする必要があると書かれています。
どんな助けでも大歓迎です。ありがとう、
デイブ
c++ - Visual Studio 2005(VC8)の使用中にリンクエラーが発生しました
実行可能ファイルのリリースバージョンをリンクしようとすると、たくさんのリンクエラーが発生します(デバッグバージョンには同じ問題はありません)。リンクのコマンドラインを比較しても、問題は発生しません。エラーには大きく2種類あり、どちらも処理できません。
最初の種類は、未解決の外部シンボル_ declspec(dllimport)について文句を言います例として:エラーLNK2019:未解決の外部シンボル " _declspec(dllimport)public:__thiscall stlpd_std :: basic_string、class stlpd_std :: allocator> :: basic_string、class stlpd_std: :allocator>(class stlpd_std :: basic_string、class stlpd_std :: allocator> const&) "(_ imp ?? 0?$ basic_string @ DV?$ char_traits @ D @ stlpd_std @@ V?$ allocator @ D @ 2 @@ stlpd_std @@ QAE @ ABV01 @@ Z)関数 "public:__thiscall Springfield :: generic :: runtime_error :: runtime_error(class stlpd_std :: basic_string、class stlpd_std :: allocator> const&)"(?? 0runtime_error @ generic @ Springfield @@ QAE @ ABV?$ basic_string @ DV?$ char_traits @ D @ stlpd_std @@ V?$ allocator @ D @ 2 @@ stlpd_std @@@ Z)
より人間が読めるバージョンの場合(すべての文字列を置き換える):エラーLNK2019:未解決の外部シンボル "__declspec(dllimport)public:__thiscall string :: basic_string、class stlpd_std :: allocator>(class string const&)"(_ imp ?? 0?$ basic_string @ DV?$ char_traits @ D @ stlpd_std @@ V?$ allocator @ D @ 2 @@ stlpd_std @@ QAE @ ABV01 @@ Z)関数 "public:__thiscall Springfield :: generic :: runtime_error: :runtime_error(class string const&) "(?? 0runtime_error @ generic @ Springfield @@ QAE @ ABV?$ basic_string @ DV?$ char_traits @ D @ stlpd_std @@ V?$ allocator @ D @ 2 @@ stlpd_std @@@ Z
sceondクラスのエラーは、未解決の外部シンボル__CrtDbgReportWについて文句を言います。
これに対処する上で、何らかの洞察を得ることができればと思います。
debugging - C++/Visual Studio 2005 - デバッグ構成のコンパイル中にテンプレート クラスがスキップされる
私は常にDebugでコンパイルできたテンプレートクラスを問題なく持っています。しかし、突然、クラスへの変更を検出することを拒否し、再構築しない限りスキップします。他のテンプレート以外のクラスでは問題ありませんし、Releaseでコンパイルするとこの問題も発生しないので、とりあえずそれを使用しています。
奇妙なことに、新しいプロジェクトを作成しましたが、同じ問題が発生します。
何か案は?
どうもありがとう。:)
c - C VC8 プロジェクトの実行可能ファイルが、vc8 がインストールされていないマシンで実行されない
C プロジェクト (windows 7)によって生成された実行可能ファイルは、インストールされvc8
ているすべての windows マシン (win xp と 7 の両方) で実行されていvc8
ます。vc8
しかし、インストールされていないがインストールされている1つのwin XPマシンでは実行されていませんvc6
。エラー メッセージはSystem cannot run the executabe
です。
私の vc8 プロジェクトが vc6 互換の exe を生成していないために発生していますか? この問題を解決する方法はありますか。
注: vc6 プロジェクトを作成し、すべての c ファイルを追加するのは複雑な作業であり、非常に時間がかかります。
merge-module - VC マージ モジュールが更新されない
私はしばらく前に問題を投稿しました:
https://stackoverflow.com/questions/16123872/visual-c-runtime-8-0-50727-6910-merge-module
マージ モジュールの特定のバージョンを見つけることができるという問題がありました。
その後、Visual Studio 2005 と 2008 の両方の SP1 を再インストールしようとしましたが、両方のランタイム (8 と 9) のマージ モジュールが (C:\Program Files (x86)\Common Files\Merge Modules) で正しく更新されません。そこにある唯一の VC マージ モジュールは、元の 8 および 9 モジュールです。
Windows 8 Enterprise x64 を実行しています。Windows 8 の Visual Studio 更新プロセスで VC8/9 マージ モジュールが正しく更新されないという問題を知っている人はいますか?