如何使用除草工程

How to use lacewing project

本文关键字:何使用      更新时间:2023-10-16

我是一个c++新手。我想在我的c++项目中使用,lacewingproject.org。我阅读了关于如何构建它的文档,并成功地使用了DLL - ReleaseStatic Library - Release配置。

现在我不知道如何在我的项目中使用这个,以及如何设置和配置我的项目?我一直在跟随这个教程,但是因为最新的Visual Studio缺少选项而被卡在中间。我在Windows 8上使用Visual c++ Expression Ed., 2012

我用谷歌搜索并做了以下操作:

  • 在我的项目中添加了lib文件和lacewing.h文件。
  • 在Visual c++项目属性下,在链接器文件夹->输入中,我将lib文件添加为附加依赖项。

我把dll放在WindowsSystem32文件夹。我需要做任何事情与dll,而不是把它放在win32文件夹?

我的代码来自文档中给出的hello world示例。

当我试图编译时,我得到:

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 *)" (?on_get@@YAXPAU_webserver@lacewing@@PAU_webserver_request@2@@Z)
1>Source.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl lacewing::pump_delete(struct lacewing::_pump *)" (__imp_?pump_delete@lacewing@@YAXPAU_pump@1@@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)" (__imp_?start_eventloop@_eventpump@lacewing@@QAEPAU_error@2@XZ) referenced in function _main
1>Source.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) struct lacewing::_eventpump * __cdecl lacewing::eventpump_new(void)" (__imp_?eventpump_new@lacewing@@YAPAU_eventpump@1@XZ) referenced in function _main
1>Source.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __cdecl lacewing::_stream::writef(char const *,...)" (__imp_?writef@_stream@lacewing@@QAAXPBDZZ) referenced in function "void __cdecl on_get(struct lacewing::_webserver *,struct lacewing::_webserver_request *)" (?on_get@@YAXPAU_webserver@lacewing@@PAU_webserver_request@2@@Z)
1>Source.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall lacewing::_webserver::host(long)" (__imp_?host@_webserver@lacewing@@QAEXJ@Z) 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 *))" (__imp_?on_get@_webserver@lacewing@@QAEXP6AXPAU12@PAU_webserver_request@2@@Z@Z) referenced in function _main
1>Source.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) struct lacewing::_webserver * __cdecl lacewing::webserver_new(struct lacewing::_pump *)" (__imp_?webserver_new@lacewing@@YAPAU_webserver@1@PAU_pump@1@@Z) referenced in function _main
1>Source.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl lacewing::webserver_delete(struct lacewing::_webserver *)" (__imp_?webserver_delete@lacewing@@YAXPAU_webserver@1@@Z) referenced in function _main
1>C:UsersJayarathinaDesktopNew folder (3)testDebugtest.exe : fatal error LNK1120: 9 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

请帮…

要与库静态链接,必须定义lw_import。如果不这样做,它将默认为__declspec(dllimport):

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

导致链接器尝试从DLL中拉入函数(这在静态链接时是错误的)。为此,您可以将lw_import=添加到项目属性中的预处理器定义中,或者在包含lacewing.h之前添加#define,如下所示:

#define lw_import
#include <lacewing.h>

在静态链接库时,您还需要将任何库依赖项链接到您自己的项目中。您可以在liblacewing.vcproj本身的项目属性中找到列表,但从0.5.1开始,这些列表是ws2_32.lib, mswsock.lib, mpr.lib, secur32.libcrypt32.lib