2016-04-16 15 views
1

mongooseを使用してC++プロジェクトをビルドしようとしましたが、リンカーエラーが発生しています。Visual Studioでmongooseを使用してC++プロジェクトを構築する方法2015

私は既存のSO同様の症状を説明する質問に対する回答を使用しようとした:私は、次のリンカーエラーを取得維持

//simple_web_server credited to Cesanta Software 
#include "stdafx.h" 

extern "C" { 
#include "mongoose.h" 
} 

static const char *s_http_port = "8000"; 
static struct mg_serve_http_opts s_http_server_opts; 

static void ev_handler(struct mg_connection *nc, int ev, void *p) { 
    if (ev == MG_EV_HTTP_REQUEST) { 
     mg_serve_http(nc, (struct http_message *) p, s_http_server_opts); 
    } 
} 

int main(void) { 
    struct mg_mgr mgr; 
    struct mg_connection *nc; 

    mg_mgr_init(&mgr, NULL); // <== this causes linker error 
    ... 

1>------ Build started: Project: simple_web_server02, Configuration: Debug Win32 ------ 
1> simple_web_server02.cpp 
1>simple_web_server02.obj : error LNK2019: unresolved external symbol _mg_mgr_init referenced in function _main 
外部Cリンケージを使用 What is an undefined reference/unresolved external symbol error and how do I fix it? #includeによってCヘッダ

mongoose.hの場所は、プロパティ> VC++>インクルードディレクトリで提供されます。

「extern」C「{...}」を省略/除外しても明らかな効果はありません。

ご迷惑をおかけして申し訳ございません。

+0

適切なリンカーフラグを指定しましたか? – fuz

+0

検索ディレクトリをリンカーに提供しましたか? –

+0

明らかに、この問題は、未定義シンボルのdupよりもむしろ、マングースライブラリ(libの代わりにプロジェクトに追加するライブラリcコード)の特定の使用法に関連しています。 – Christophe

答えて

1

mongoose.hを含める場合は、原則としてextern "C"を指定する必要はありません。このヘッダーファイルには、C++プロジェクトで使用される場合はensure "C" linkageという条件付きコンパイル文が含まれています。

明らかに、あなたはリンカーにライブラリ(lib)を含めていませんでした。

EDIT:あなたがプリコンパイルされたライブラリを構築/ダウンロードしていない場合は、あなたはthisの説明によると、プロジェクトにmongoose.cファイルを追加する必要があります。

+0

私は今mongoose.cをコンパイルして、設定プロパティ> VC++ディレクトリ>ライブラリディレクトリで結果の.libファイルへの参照を追加しましたが、同じリンカの失敗が表示されます。 ? – SteveR

+0

@SteveR ok、それは動作しますか?または、他のリンカーの問題がありますか? – Christophe

+0

私が不明な場合は申し訳ありません。同じリンクエラー(未解決の外部シンボル)が表示されます。 – SteveR

関連する問題