質問

Visual Studioでは、直接呼び出しすらしていないメソッドに対して、リンカエラーが大量に発生しています。私は1日でJava開発者ですが、Windowsマシンで実行することを目的としたC ++で実行する必要があるプロジェクトがあります。そのため、Visual Studioをいじり続けています。

基本的に、アクセサメソッドを追加したosプロジェクトがあります。そのプロジェクトを.libファイルとしてコンパイルしました(コンパイルとリンクは問題ありません)。

そのライブラリを使用する独自のプロジェクトがあります。ライブラリをProject-> Properties->に含めました。リンカー->入力し、一般に適切なディレクトリを設定します->追加のLibディレクトリ。適切なファイルにヘッダーを含めましたが、クラスの1つのコンストラクターを呼び出しているだけです...まだ作成したメソッドを呼び出すこともありません。

コードはコンパイルされますが、次のような大量のリンカーエラーが発生します。ほとんどがLNK2019およびLNK2001エラーです。さまざまな設定(lib、exeなど)で再コンパイルしようとしましたが、リンカーエラーは増加するようです。以前の設定に戻すと、エラーの数はピークのままです。これを修正する方法はありますか?

ビルドログ

  

ビルドの開始:プロジェクト:SpamCapture、構成:Debug | Win32

コマンドライン:

  

一時ファイルの作成" c:\ SpamCapture \ SpamCapture \ SpamCapture \ Debug \ RSP0000103081740.rsp"コンテンツ付き   [   / VERBOSE:LIB /OUT:"C:\SpamCapture\SpamCapture\SpamCapture\Debug\SpamCapture.exe" / INCREMENTAL / LIBPATH:" C:\ SpamCapture \ Config \ Debug \" / MANIFEST /MANIFESTFILE:"Debug\SpamCapture.exe.intermediate.manifest" /NODEFAULTLIB:"libcmtd.lib" /NODEFAULTLIB:"nafxcwd.lib" / DEBUG /PDB:"c:\SpamCapture\SpamCapture\SpamCapture\Debug\SpamCapture.pdb" / SUBSYSTEM:CONSOLE / MACHINE:X86 KeyCapture_Config.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

     

"。\ Debug \ Interaction.obj"

     

"。\ Debug \ InteractionSet.obj"

     

"。\ Debug \ LogReader.obj"

     

"。\ Debug \ SpamCapture.obj"

     

"。\ Debug \ stdafx.obj"

     

"。\ Debug \ SpamCapture.res"

     

"。\ Debug \ SpamCapture.exe.embed.manifest.res"   ]   コマンドライン" link.exe @c:\ SpamCapture \ SpamCapture \ SpamCapture \ Debug \ RSP0000103081740.rsp / NOLOGO / ERRORREPORT:PROMPT"

を作成しています

出力ウィンドウ:

  

リンクしています...   リンク:警告LNK4067:あいまいなエントリポイント。 「mainCRTStartup」を選択しました   ライブラリを検索する       C:\ SpamCapture \ Config \ Debug \ KeyCapture_Config.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ lib \ kernel32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ user32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ gdi32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ winspool.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ comdlg32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ advapi32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ shell32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ ole32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ oleaut32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ lib \ uuid.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ odbc32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ odbccp32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ lib \ msvcprtd.libの検索:       検索中C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ lib \ MSVCRTD.lib:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ lib \ OLDNAMES.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ atlmfc \ lib \ mfc80ud.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ atlmfc \ lib \ mfcs80ud.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ msimg32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ comctl32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ shlwapi.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ atlmfc \ lib \ atlsd.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ wininet.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ ws2_32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ mswsock.libの検索:       C:\ SpamCapture \ Config \ Debug \ KeyCapture_Config.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ lib \ kernel32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ user32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ gdi32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ winspool.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ comdlg32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ advapi32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ shell32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ ole32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ oleaut32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ lib \ uuid.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ odbc32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ odbccp32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ lib \ msvcprtd.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ lib \ MSVCRTD.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ lib \ OLDNAMES.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ atlmfc \ lib \ mfc80ud.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ atlmfc \ lib \ mfcs80ud.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ msimg32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ comctl32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ shlwapi.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ atlmfc \ lib \ atlsd.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ wininet.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ ws2_32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ mswsock.libの検索:       C:\ SpamCapture \ Config \ Debug \ KeyCapture_Config.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ lib \ kernel32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ user32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ gdi32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ winspool.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ comdlg32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ advapi32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ shell32.libの検索:       C:\ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ lib \ ole32.liを検索する

役に立ちましたか?

解決

ライブラリ KeyCapture_Config.lib はMFC GUIクラス( CWnd CWinApp など)を使用していますが、リンクしているアプリケーションintoはコンソールアプリケーションです(リンカーコマンドラインの / SUBSYSTEM:CONSOLE オプションを参照)。これは機能しません。新しいMFC GUIアプリケーションプロジェクトを作成し、そのプロジェクトにライブラリを追加する必要があります。

編集:コメントのリンクを確認しました: http:// dynamicnetservices.com/~will/academic/textinput/keycapture/ では、KeyCapture_Configは実際にはKeyCapture DLLを使用するMFCダイアログアプリケーションであるようです。 KeyCapture.lib に直接リンクすることにより、コンソールアプリケーションでKeyCaptureを使用できる場合があります。

他のヒント

リンクエラーは、多くのMFC関数がないことを訴えているようで、次の行をリンクします。/NODEFAULTLIB:"nafxcwd.lib" MFCを除外します。リンクしているライブラリはMFCで構築されていますか?

確認する他のことは、同じ文字セット(つまり、両方ともマルチバイトまたは両方ともUnicode)でアプリとライブラリをコンパイルしていることです。

ライブラリを構築している場合、リンク手順はありません。したがって、オブジェクトの任意のコレクションは、他に必要なものを考慮せずにライブラリにスローできます。

プロジェクトがデバッグマルチスレッドランタイムとリンクしているようです。これはあなたの意図ですか?その場合、使用していると思われるKeyCapture_Configライブラリとの不一致がある可能性があります。

KeyCapture_Configはサードパーティのライブラリですか?もしそうなら、ソースからビルドしましたか、またはlib / dllが提供されましたか?

どのC / C ++ランタイムが構築されているかについて調査する必要があるかもしれません。 Microsoft KB記事を参照すると、ランタイムビルドの不一致の可能性を明らかにすることができます。

Rob Walkerが問題を解決したと思います。 KeyCapture_Config.libのドキュメントにMFCへのリンクが記載されていない場合は、MFCへのリンクを必要とするディレクティブのソースを確認してください。このようなもの:

#pragma comment(lib, "nafxcwd.lib")

MFCへの依存関係が発生し、KeyCapture_Config.libドキュメントが古くなる可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top