Visual Studio 2010Proで古いcppMFCプロジェクトをコンパイルしようとしています。
Labviewを使用してコンパイルされたdllを使用していますが、エラーメッセージの原因がわからないため、この情報を追加しています。
エラーメッセージは、すべて同じエラータイプの複数の機能に表示されます。
error C2733: second C linkage of overloaded function 'function name' not allowed.
「関数名」には、「StrCatW」、「StrCmpNW」、「StrCmpW」、「StrCpyNW」、および「StrCpyW」が含まれます。
私はウェブ上で 同様のケース を見つけました。
リンクの提案は私の場合は解決しませんでしたが、それでも同じエラーメッセージが表示されます。
助けようとしている人に事前に感謝します。
私はMFCの経験がありませんが、とにかく答えようとします。このようなエラーメッセージは、extern "C"
関数が異なるパラメータセットで宣言されている場合に表示されます。例えば:
extern "C" int myfunc(int);
extern "C" int myfunc(char);
あなたの場合、2つの宣言はおそらくchar*
に関連しています。
extern "C" char* StrCatW(char*, char*);
extern "C" wchar_t* StrCatW(wchar_t*, wchar_t*);
ソリューションでUnicodeサポートをオフにしてみてください。dllが本当に古い場合は、StrCatW
をchar*
引数で宣言し、他の宣言と競合していると思います。
それでも問題が解決しない場合は、前処理された出力をオンにします(/E
コンパイラスイッチ、私が覚えている限り)-非常に大きなファイルが出力されるので、その中でStrCatW
を探してください。何が起こっているかについての手がかりを与えてください。