2016-12-11 14 views
0

私はC++で作業しているプロジェクトにlibssh2ライブラリを使用しています。私は主なアプリで適切に実装する前に、テストするための非常に基本的なプロジェクトを作成しました。NuGetパッケージを使用しているC++プロジェクトでlibssh2を参照するとリンカエラーが発生する

それは私が手にコンパイルするとき、私は次のコード

#include <libssh2.h> 
#include <windows.h> 
#include <winsock2.h> 
#include <ws2tcpip.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <iostream> 

using namespace std; 

const char *username = "user"; 
const char *password = "password"; 
const char *server_ip = "127.0.0.1"; 
const char *local_listenIP = "127.0.0.1"; 
unsigned int local_listenport = 2222; 
const char *remote_desthost = "127.0.0.1"; 
unsigned int remote_destport = 22; 
enum { 
    AUTH_NONE = 0, 
    AUTH_PASSWORD, 
    AUTH_PUBLICKEY 
}; 

int main() 
{ 
    int rc, i, auth = AUTH_NONE; 

    struct sockaddr_in sin; 
    socklen_t sinlen; 
    const char *fingerprint; 
    char *userauthlist; 
    LIBSSH2_SESSION *session; 
    LIBSSH2_CHANNEL *channel = NULL; 
    const char *shost; 
    unsigned int sport; 
    fd_set fds; 
    struct timeval tv; 
    ssize_t len, wr; 
    char buf[16384]; 
    char sockopt; 
    SOCKET sock = INVALID_SOCKET; 
    SOCKET listenSocket = INVALID_SOCKET, forward_socket = INVALID_SOCKET; 
    WSADATA wsadata; 
    int err; 

    err = WSAStartup(MAKEWORD(2, 0), &wsadata); 
    if (err != 0) 
    { 
     cout << "WSAStartup failed with error " << err << " Msg: " << strerror(err) << endl; 
     return EXIT_FAILURE; 
    } 
rc = libssh2_init(0); 
    if (rc != 0) 
    { 
     cout << "Failed to init libssh2. Error " << rc << " Msg: " << strerror(err) << endl; 
     return EXIT_FAILURE; 
    } 

を持って、私はhttps://www.libssh2.org/examples/direct_tcpip.htmlから例を取っていると私は、Visual StudioでNuGetパッケージマネージャを使用して2015年

をlibssh2のライブラリをインストールしています次のエラーが発生しました:

Unresolved external symbol libssh2_init referenced in function main 
Unresolved external symbol _imp_WSAStartup referenced in function main 

ご協力いただきありがとうございます。

+0

おそらく、libssh2、またはwinsockとリンクしていない可能性があります。 – harmic

答えて

0

ライブラリのリンクを解決するために、.libファイルを手動でプロジェクトに追加することができます。.libファイルを追加してください:Properties> Linker-> Input-> Additional Dependencies .libファイルパス:Properties> Linker-> General-> Additional Dependencies。

2番目のエラーについては、Ws2_32.libライブラリとリンクしていないという問題があります。これを修正するには、プロジェクトのソースファイルに次のコードを追加します。

#pragma comment(lib, "Ws2_32.lib") 
+0

NuGetパッケージマネージャがインストールを完了したときにlibが自動的にリンカに追加されることを期待していましたが、プラグマが必要なことを忘れてしまいました – Boardy

関連する問題