リンカー ツール エラー LNK1107
ファイルが無効または破損しています: 位置 address を読み取れません
ツールはファイルを読み取ることができませんでした。 ファイルが壊れているか、予期しないファイルの種類である可能性があります。
解説
LNK1107 は、リンカーに渡されたファイルまたは関連ツールが破損している場合に発生する可能性があります。 この問題を解決するには、ファイルをリビルドします。
LNK1107 は、ビルド プロセスでツールに渡すファイルのリストに予期しないファイルの種類が含まれている場合にも発生する可能性があります。 リンカーと関連ツールは、特定のファイルの種類に対して使用することが想定されています。 たとえば、リンカーは、オブジェクト ファイル、ライブラリ ファイル、コンパイル済みリソース、マニフェストを使って実行可能ファイルを作成できます。 ソース ファイルや DLL を使って実行可能ファイルを作成することはできません。 この問題を解決するには、ビルド プロセスで、想定されているファイルの種類のみをツールに渡す必要があります。 たとえば、.obj
、.lib
、.res
ファイルを渡し、.cpp
、.h
、.dll
、.rc
ファイルは渡さないようにします。
LNK1107 は、.NET 実行可能モジュール (/clr:noAssembly
または /NOASSEMBLY
で作成された .dll
または .netmodule
ファイル) をリンカーに渡そうとする場合にも発生する可能性があります。 この問題を解決するには、代わりに .obj
ファイルを渡します。
例
cl /clr /LD LNK1107.cpp
を使ってこのサンプルをコンパイルします。
// LNK1107.cpp
// compile with: /clr /LD
public ref class MyClass {
public:
void Test(){}
};
その後、コマンド ラインで link LNK1107.dll
を指定すると、LNK1107 が発生します。 このエラーを解決するには、代わりに link LNK1107.obj
を指定してください。