web-dev-qa-db-ja.com

エラーLNK2019の解決方法

C++で簡単なメールを送信しています。以下のリンクからサンプルC++プログラムをダウンロードしました。 http://cboard.cprogramming.com/cplusplus-programming/125655-sending-simple-email-cplusplus.html サンプルプログラムをコンパイルすると、次のエラーが発生するようです。解決策を教えてください。

Error   8   error LNK2019: unresolved external symbol _send_mail referenced in function _wmain  

Error   9   error LNK2019: unresolved external symbol __imp__recv@16 referenced in function "int __cdecl connect_to_server(char const *)" (?connect_to_server@@YAHPBD@Z)    

Error   10  error LNK2019: unresolved external symbol __imp__connect@12 referenced in function "int __cdecl connect_to_server(char const *)" (?connect_to_server@@YAHPBD@Z) 

Error   11  error LNK2019: unresolved external symbol __imp__htons@4 referenced in function "int __cdecl connect_to_server(char const *)" (?connect_to_server@@YAHPBD@Z)    

Error   12  error LNK2019: unresolved external symbol __imp__socket@12 referenced in function "int __cdecl connect_to_server(char const *)" (?connect_to_server@@YAHPBD@Z)  

Error   13  error LNK2019: unresolved external symbol __imp__getprotobyname@4 referenced in function "int __cdecl connect_to_server(char const *)" (?connect_to_server@@YAHPBD@Z)   

Error   14  error LNK2019: unresolved external symbol __imp__gethostbyname@4 referenced in function "int __cdecl connect_to_server(char const *)" (?connect_to_server@@YAHPBD@Z)    
6
user1

同じエラーが発生しました(「LNK2019:未解決の外部シンボル....」)。私のヘッダーと呼び出しは正しく定義されており、デバッグモードでのみリンクに失敗しました(リリースモードでは問題はありません)。私の問題は誤った_.vcxproj_ファイルが原因であることがわかりました。

vxcprojファイルを編集してプロジェクトに新しい依存関係を追加したとき、私は誤りを犯しました。2つのセクションはファイル拡張子を除いて同一であると考えたので、最初の_<ItemGroup>_から最後の_<ItemGroup>_まで(以下を参照)。

バッチスクリプトを使用してReleaseモードでコードをコンパイルしたため、しばらくの間気付かれませんでした。 Debugモードに切り替えると、リンク段階でプロジェクトが失敗しました。最終的に、私は自分のエラーを発見し、次のパッチで問題を解決しました:

_-    <ClCompile Include="crypto/crypto.h" />
-    <ClCompile Include="crypto/rsa_public_key.h" />
+    <ClInclude Include="crypto/crypto.h" />
+    <ClInclude Include="crypto/rsa_public_key.h" />
_

_.vcxproj_ファイルのバギーバージョン:

_  <ItemGroup>
    ...
    <ClCompile Include="main.cpp" />
    <ClCompile Include="crypto/crypto.cpp" />
    <ClCompile Include="crypto/rsa_public_key.cpp" />
  </ItemGroup>
  <ItemGroup>
    <None Include="main.def" />
  </ItemGroup>
  <ItemGroup>
    ...
    <ClInclude Include="main.h" />
    <ClCompile Include="crypto/crypto.h" />
    <ClCompile Include="crypto/rsa_public_key.h" />
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>
_

結論:LNK2019が表示され、インターネットヘルプの説明が表示されない場合は、プロジェクトの設定を確認してください。バージョン管理を使用している場合は、現在のプロジェクトファイルを既知の良好な古いバージョンと比較してください。

9
Rob W

おそらく、クラスで関数を宣言しましたが、その定義でスコープ解決演算子を使用するのを忘れています。少なくともそれが私にそのエラーを与えたものです。

私の場合、これは、抽象クラスのメソッドがvirtualだったために発生していましたが、どのサブクラスにも実装されていませんでした。

ただし、これはそのLNKエラーの複数の原因の1つにすぎない場合があります。

4
ndarriulat

エラーLNK2019:未解決の外部 を見ると、問題はサブシステムの設定にあるようです。あなたの質問は エラーLNK2019:未解決の外部シンボル に関連しています。

3
Mihai8

おそらく、プロジェクトにいくつかのソースコードファイルをインクルードするのを忘れたか、関数を実装するのを忘れて、コンパイラがそれを見つけられない可能性があります。 (「LNK2019:未解決の外部シンボル....」)。

3

モジュール全体の宣言に対応する変数名の代わりに関数パラメーターがポインターとして渡された場合、 MSDNページ の2番目のポイントを適用しました。

1
Laurie Stearn

ソケットodbcおよびサーバー接続に関連するエラーについては、プロジェクトをMicrosoft SDKライブラリにリンクする必要があります

0
prasad nijsure

int main()関数がない場合にエラーが発生することがあります。

0
Lucian Gabriel