2013-04-07 50 views
0

我是C++的新手。我想在我的C++項目中使用lacewing-project.org。我閱讀了關於如何構建它的文檔,併成功地使用了DLL - ReleaseStatic Library - Release配置。如何使用lacewing項目

現在我不知道如何在我的項目中使用它以及如何設置和配置我的項目?我正在關注this tutorial,但是由於在最新的Visual Studio中缺少選項而陷入了中間位置。我使用Visual C++表達式版,2012在Windows 8

我一派,做了以下內容:

  • 新增的lib文件,並在我的項目中lacewing.h文件。
  • 在Visual C++項目屬性下,在鏈接器文件夾中 - >輸入我將lib文件添加爲附加依賴項。

我將DLL放在Windows \ System32文件夾中。除了將它放在win32文件夾中,我需要對dll做任何事嗎?

我的代碼來自文檔中給出的hello world example

當我嘗試編譯,我得到:

1>------ Build started: Project: test, Configuration: Debug Win32 ------ 
1> Source.cpp 
1>Source.obj : error LNK2019: unresolved external symbol __imp__lw_version referenced in function "void __cdecl on_get(struct lacewing::_webserver *,struct lacewing::_webserver_request *)" ([email protected]@[email protected]@@[email protected]@@Z) 
1>Source.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl lacewing::pump_delete(struct lacewing::_pump *)" ([email protected]@@[email protected]@@Z) referenced in function _main 
1>Source.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: struct lacewing::_error * __thiscall lacewing::_eventpump::start_eventloop(void)" ([email protected][email protected]@@[email protected]@XZ) referenced in function _main 
1>Source.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) struct lacewing::_eventpump * __cdecl lacewing::eventpump_new(void)" ([email protected]@@[email protected]@XZ) referenced in function _main 
1>Source.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __cdecl lacewing::_stream::writef(char const *,...)" ([email protected][email protected]@@QAAXPBDZZ) referenced in function "void __cdecl on_get(struct lacewing::_webserver *,struct lacewing::_webserver_request *)" ([email protected]@[email protected]@@[email protected]@@Z) 
1>Source.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall lacewing::_webserver::host(long)" ([email protected][email protected]@@[email protected]) referenced in function _main 
1>Source.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall lacewing::_webserver::on_get(void (__cdecl*)(struct lacewing::_webserver *,struct lacewing::_webserver_request *))" ([email protected][email protected]@@[email protected][email protected]@@[email protected]) referenced in function _main 
1>Source.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) struct lacewing::_webserver * __cdecl lacewing::webserver_new(struct lacewing::_pump *)" ([email protected]@@[email protected]@[email protected]@@Z) referenced in function _main 
1>Source.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl lacewing::webserver_delete(struct lacewing::_webserver *)" ([email protected]@@[email protected]@@Z) referenced in function _main 
1>C:\Users\Jayarathina\Desktop\New folder (3)\test\Debug\test.exe : fatal error LNK1120: 9 unresolved externals 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

請幫助...

+0

您添加哪個lib文件作爲附加依賴項? – 2013-04-08 09:15:22

+0

>使用「靜態庫 - 釋放」編譯lacewing-project時生成的庫。除此之外沒有其他的庫 – 2013-04-08 14:16:24

+0

>並且DLL是使用DLL編譯時生成的DLL - 版本 – 2013-04-08 14:27:10

回答

1

要與庫靜態鏈接,一個必須定義lw_import。如果你不這樣做,它會默認爲__declspec(dllimport)

#ifndef lw_import 
    #define lw_import __declspec (dllimport) 
#endif 

這會導致鏈接,試圖從一個DLL中拉功能(這是錯誤的,當靜態鏈接)。要做到這一點,您可以包括lacewing.h前添加lw_import=到您的預處理器定義在項目屬性,或#define它,像這樣:

#define lw_import 
#include <lacewing.h> 

當你靜態鏈接庫,您還需要鏈接任何庫依賴項放入您自己的項目中。您可以在liblacewing.vcproj本身的項目屬性中找到列表,但是從0.5.1開始,它們是ws2_32.lib,mswsock.lib,mpr.lib,secur32.libcrypt32.lib

+0

非常感謝您的幫助。 :) – 2013-04-08 17:56:15

+0

對於那些想知道如何在Windows 8上獲取lib文件的人,他們出現在'C:\ Program Files \ Windows Kits \ 8.0 \ Lib \ win8 \ um \ x86'這裏的更多信息:http: //stackoverflow.com/a/14778492/960641 – 2013-04-08 18:01:09