2011-09-29 11 views
7

へのストリップパス、リリースモードでのVisual Studioプロジェクトをコンパイルするとき、PDBへの完全なパスがイメージファイルに入れて、例えば/pdbpath:none)1は、例えば、PDBの完全修飾名を減らすためのVisual Studio 2008を強制することができますデフォルトパーPDB

test.pdb 

を私はまだVC6を使用して構築されたプロジェクトで同じことを行う必要があります。

プロジェクト設定レベルで "/pdbpath:none"スイッチを試しましたが、この不明なスイッチについてリンカが苦情を言います。

VC6プロジェクトをリンクするとき、または後で直接イメージレベルでこれを行う方法(またはツール)を知っている人はいますか?

+0

このスイッチはVisual Studio 2010以降で利用可能です(ドキュメント化されています) – mox

+0

このスイッチはVisual Studio 2008でも動作します。 – mox

+0

peupdate([website here](http://bytepointer.com/tools/index)というツールがあります.htm#peupdate))このPDB文字列を削除、削除、または変更して、EXEまたはDLLの任意の値に変更します。あなたの特定の質問については、 "-s"(ストリップ)オプションを使用してパスを削除しますが、ファイル名はそのままにしておきます。 – byteptr

答えて

2

あなたの最善の策はMSから直接pdbstr.exeを使用することです。コンパイラのバージョンとは無関係に直接抽出、更新、その他の機能を直接実行することができます(今サポートされているバージョンまでサポートされています)。私たちはそれを使ってSVNリンキングをPDBに直接追加し、srctoolを使ってローカルシンボルストアに格納します。

+0

ありがとう!このユーティリティが代替データストリーム(ADS)を使用していることを知ることは面白いです... "、バージョン管理情報をターゲットの.pdbファイルの" srcsrv "代替ストリームに挿入します。 – mox

+0

pdbstr.exeを使用するコマンドラインの例を教えてください。ドキュメントでも、パスを削除する方法を理解できませんでした。 – byteptr

+0

@byteptr遅く返事を申し訳ありません。 Poweshellスクリプトを使用して、一時的なストリームファイル($ streamContent)に新しいブロックを作成してから、 のように直接実行ファイルを呼び出します。 "$ ToolPath" /pdbstr.exe -ws:srcsrv "-p:$ pdbFullName" "-i:$ streamContent" これは、指定されたストリームを$ pdbFullNameで指定されたpdbにsrcsrvストリームとして追加します。パスとそのすべて。 – Woody14619

0

新しいlink.exeバージョンの場合、構文が変更されました。

必要なオプションは今ある/pdbaltpath:%_PDB%それは、MSDNに記載されてい

https://msdn.microsoft.com/en-us/library/dd998269.aspx

%_PDB%は、任意のパス情報なしで実際の.pdbファイルのファイル名に展開さ

VC6の場合は、同じコンパイラを使用しますが、新しいバージョンのlink.exeを使用したい場合があります。

Windowsドライバキットには、この情報ポストビルドを変更できるbinplace.exeという名前のツールも付属しています。

+0

これは静的ライブラリでは壊れているようです。LNK4044:認識できないオプション '/ pdbaltpath:%_ PDB%';無視されました – syplex

+0

@syplex:どのバージョンのリンカーを使用していますか?静的ライブラリはあなたの問題と何を結びつけますか? –

+0

いくつかのバージョンを試しました。バージョン14.12.25835.0まで。静的ライブラリのPDBパスを指定または変更する方法を理解しようとしています。パスはDLL/EXEのように.libに埋め込まれています(しかし異なっています)が、変更する方法はありません。私はこれのためにPDBALTPATHのような何かが期待されますが、何も見つけられませんでした。 – syplex

関連する問題