いくつかの VC++ DLL に問題があり、.NET/C# プロジェクトに含める必要があります。1 つの VC++ DLL は C++/CLI DLL で、.NET プロジェクトからパブリック インターフェイスとして使用します。他の DLL はネイティブ C++ で記述されています。VC++ DLL のソースにはアクセスできません。使用するしかありません。
.NET テスト プロジェクトを作成し、C++/CLI DLL を参照しました。問題ありません。コンパイラは幸運です。1 つだけ問題があります。.NET プログラムの EXE を起動すると、VC++ コア DLL が見つからないため、C++ DLL に関するエラーが発生します。sxstrace は次のように表示します (短縮):
INFO: Reference: Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
INFO: Reference: Microsoft.VC80.OpenMP,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
INFO: Resolving reference Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
...
ERROR: Cannot resolve reference Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195".
今、私はばかではなく、いくつかのことを試しました。何が起こっているのかをより深く理解するために、WinSxS について多くのことを読みました。今、私はそれが私にとってうんざりしているポイントにいます。プログラムを実行したいシステムには、現在のバージョン 8.0.50727.762 (SP1) の VC++ Redistributable パッケージがインストールされています。このアセンブリのすべてのバージョンを現在のバージョン 8.0.50727.762 にリダイレクトする winsxs の Microsoft.VC80.CRT 用のポリシー ファイルがあることを知っています (これがhttp://blogs.msdn.com/b/nikoladの問題の解決策です)。 /archive/2007/03/29/a-solution-to-two-references-to-different-versions-of-crt-mfc-atl-in-one-application-manifest-file.aspx)。しかし、上記のエラーが示すように、このポリシー ファイルは機能していないように見えるか、考慮されていません。システムは、アセンブリの 8.0.50727.6195 バージョンを見つけたいだけです。
これが最初の質問です。ここでの問題は何ですか? これを理解した後、最初の問題を解決できました...