シエラチャートと呼ばれるアプリケーション用に.DLLをコンパイルしようとしています。
これは、すべてリンカー出力値を指すように修正する必要があるという警告です。
警告MSB8012:TargetPath(C:\ SierraChart\VCProject\Release\SCStudies.dll)がリンカーのOutputFileプロパティ値(c:\ sierrachart\data\SCStudies.dll)と一致しません。これにより、プロジェクトが正しくビルドされない可能性があります。これを修正するには、$(OutDir)、$(TargetName)、および$(TargetExt)プロパティ値が%(Link.OutputFile)で指定された値と一致することを確認してください。 C:\ Program Files(x86)\ MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets
何か案は?
この警告は、C++プロジェクトをVS2010にアップグレードするときに特に表示されると思います。 Visual Studio 2010 C++プロジェクトアップグレードガイド アップグレード中に発生するいくつかの警告について説明します。プロジェクト設定を変更することに不安がある場合は、古いバージョンのVisualStudioを保持することで問題が解決する場合があります。
%(Link.OutputFile)
を変更するには、プロジェクトのプロパティを開きます。 [構成のプロパティ]-> [リンカー]-> [一般]に移動します。出力ファイルを$(OutDir)\SCStudies.dll
に設定できます。これにより、問題が解決されます。構築する構成/フレーバー(Debug/x86、Release/x86、Debug/Itaniumなど)ごとに変更を繰り返す必要がある場合があります。
これに基づいて 回答 。
次のプロパティを変更しました。
リンカ->一般->ファイルを「$(OutDir)$(TargetName)$(TargetExt)」に出力
これにより、警告が表示されなくなり、出力が正常に生成されました。
他の人が言及していない別の修正は、デフォルトでTargetExtが.exe
であり、デバッグビルドでは_d.exe
に変更しました。代わりに、TargetNameパスでこれを行う必要があります。
元の構成は次のように設定されました。
プロパティ->リンカー->一般:
$(OutDir)\"<'name fileA>".exe
プログラムは "_<'name_project>
_"。exeを実行しようとし、その結果エラーリンクされました。
構成を次のように設定する必要があります。
プロパティ->リンカー->一般:
$(OutDir)\"<'project name>".exe
プログラムにとって重要ではないようです。
GerardoHernandezからのコメントは私を助けてくれました。
[一般]-> [出力ディレクトリ]で指定されたディレクトリと、[リンカー]-> [出力ファイル]のパスで指定されたディレクトリが一致している必要があります。
私の場合、Visual Studio6から大規模なプロジェクトをインポートしていました。
C:\Project\myproject\OneOfMyDlls\.\Debug\OneOfMyDlls.dll
等しくなかった
C:\Project\myproject\Debug\OneOfMyDlls.dll
だが
C:\Project\myproject\OneOfMyDlls\..\Debug\OneOfMyDlls.dll
パスを減らした後はそうだったでしょう。
問題は、Visual Studio 2017のインポートで、従来とは異なる親ディレクトリの使用が誤りであると想定して、出力ディレクトリが..\Debug
から.\Debug
に変更されたことでした。独自のDLLが13個ある大規模なプロジェクト(セカンドパーティとサードパーティのDLLも気にしないでください)では、すべてのDLLを1つの場所に収集するのが理にかなっており、..\Debug
は正しかったです。
したがって、他の人がLinker->Output File
を変更しなければならなかったかもしれませんが、私の場合はGeneral->Output Directory
でしたが、Visual Studio6からのインポートによって破損していたため変更する必要がありました。
インポート後、..\Debug
のようなものは.\Debug
のようなものになりました。 (実際のプロジェクト固有の名前は削除されました。)
[一般]-> [出力ディレクトリ]で指定されたディレクトリと、[リンカ]-> [出力ファイル]のパスで指定されたディレクトリが一致している必要があります。
デフォルトを変更する場合は、次の順序で実行します。まず、[一般]-> [出力ディレクトリ]でOutDirを構成します。例えば。
$(SolutionDir)$(Platform)\$(Configuration)\MyProgram\
出力ファイルに一貫性があることを確認してください。例えば。これはうまくいくでしょう
$(OutDir)\$(TargetName)$(TargetExt)