我的Windows 7 32位机器和我的C ++编译器是 Visual Studio 2012 所以首先我从这里下载了FLTK(http://www.stroustrup.com/Programming/FLTK/),然后我按照以下方式完成了工作想要我:
予。解压缩下载的文件并打开主文件夹fltk-l.l。在一个 Visual C ++文件夹(例如,vc2005或vcnet),打开fltk.dsw。如果被问及 更新旧项目文件,选择Yes to All。
PS:我的编译器是 vc2012 而不是 vc2005 ,并且中没有任何名为 fltk.dsw 的文件vc2005或vcnet 文件夹,所以我从vcnet中选择 fltk.sln 并安装它。安装时有些失败,但最终完成了!
从“构建”菜单中,选择“构建解决方案”。这可能需要几分钟的时间。 源代码正在编译成静态链接库,以便 您不必在任何时候重新编译FLTK源代码 一个新项目。完成此过程后,关闭Visual Studio。
从主FLTK目录中打开lib文件夹。复制(不只是 移动/拖动除README.lib之外的所有.lib文件(应该有 scven)进入C:\ Prograrn Files \ Microsoft Visual Studio \ Vc \ lib。
返回FLTK主目录并将FL文件夹复制到 C:\ Program Files \ Microsoft Visual Studio \ Vc \ include。
在Visual Studio中创建一个新项目,只需对常规过程进行一次更改: 创建一个" \ Vin32项目"而不是一个"控制台应用程序"什么时候 选择你的项目类型。一定要创建一个空的项目&#34 ;;除此以外, 一些"软件向导"会为你的项目添加很多东西 你不太可能不需要或理解。
在Visual Studio中,从主(顶部)菜单中选择“项目”,然后从中选择“项目” 下拉菜单选择“属性”。
在“属性”对话框的左侧菜单中,单击“链接器”文件夹。 这扩展了子菜单。在此子菜单中,单击“输入”。在附加 右侧的依赖关系文本字段,输入以下文本: fltkd.lib wsock32.lib comctl32.lib fltkjpegd.lib fltkimagesd.lib [以下步骤可能是必要的,因为il现在是默认值。] 在“忽略特定库”文本字段中,输入以下文本: libcd.lib
[此步骤可能不必要,因为/ MDd现在是默认值。]在 左侧菜单的相同属性窗口,鸡巴C / C ++扩展不同 子菜单。单击代码生成子菜单项。在右边 菜单,将运行时库下拉列表更改为多线程 调试DLL(/ MDd)。单击“确定”关闭“属性”窗口。
我这一步我在新创建的项目中添加了一个新项目(我将该项目命名为 testv.cpp )并粘贴了这个简单的代码来测试FLTK:
#include <FL/Fl.h>
#include <FL/Fl_box.h>
#include <FL/Fl_Window.h>
//***************************
int main()
{
FI_Window window(200, 200, "Window title");
FL_Box box(O,O,200,200, "Hey, I mean, He llo, World! ");
window.show();
return Fl::run();
}
运行此项目后(按F5),出现11个错误!他们在吼叫:
错误1错误LNK2019:未解析的外部符号&#34; public:static int __cdecl Fl :: run(void)&#34; (?run @ Fl @@ SAHXZ)在函数_main C:\ Users \ CS \ documents \ visual studio 2012 \ Projects \ testv \ testv \ testv.obj
中引用错误2错误LNK2019:未解析的外部符号&#34;受保护: __thiscall Fl_Widget :: Fl_Widget(int,int,int,int,char const *)&#34; (?? 0Fl_Widget @@ IAE @HHHHPBD @ Z)在函数&#34; public中引用: __thiscall Fl_Box :: Fl_Box(int,int,int,int,char const *)&#34; (?? 0Fl_Box @@ QAE @HHHHPBD @ Z)C:\ Users \ CS \ documents \ visual studio 2012 \项目\ testv \ testv \ testv.obj
错误3错误LNK2019:未解析的外部符号&#34; public:virtual __thiscall Fl_Widget :: ~Fl_Widget(void)&#34; (?? 1Fl_Widget @@ UAE @ XZ)在函数&#34; public:virtual __thiscall中引用 Fl_Box ::〜Fl_Box(无效)&#34; (?? 1Fl_Box @@ UAE @ XZ)C:\ Users \ CS \ documents \ visual studio 2012 \项目\ testv \ testv \ testv.obj
错误4错误LNK2001:未解析的外部符号&#34; public:virtual void __thiscall Fl_Widget :: resize(int,int,int,int)&#34; (?resize @ Fl_Widget @@ UAEXHHHH @ Z)C:\ Users \ CS \ documents \ visual studio 2012 \项目\ testv \ testv \ testv.obj
错误5错误LNK2001:未解析的外部符号&#34; protected:virtual void __thiscall Fl_Box :: draw(void)&#34; (?draw @ Fl_Box @@ MAEXXZ)C:\ Users \ CS \ documents \ visual studio 2012 \项目\ testv \ testv \ testv.obj
错误6错误LNK2001:未解析的外部符号&#34; public:virtual int __thiscall Fl_Box :: handle(int)&#34; (?handle @ Fl_Box @@ UAEHH @ Z)C:\ Users \ CS \ documents \ visual studio 2012 \项目\ testv \ testv \ testv.obj
错误7错误LNK2019:未解析的外部符号&#34; public:__ thishisall Fl_Window :: Fl_Window(int,int,char const *)&#34; (?? 0Fl_Window @@ QAE @HHPBD @ Z)在函数中引用 _main C:\ Users \ CS \ documents \ visual studio 2012 \ Projects \ testv \ testv \ testv.obj
错误8错误LNK2019:未解析的外部符号&#34; public:virtual __thiscall Fl_Window :: ~Fl_Window(void)&#34; (?? 1Fl_Window @@ UAE @ XZ)在函数_main C:\ Users \ CS \ documents \ visual studio中引用 2012 \项目\ testv \ testv \ testv.obj
错误9错误LNK2019:未解析的外部符号&#34; public:virtual void __thiscall Fl_Window :: show(void)&#34; (?显示@ Fl_Window @@ UAEXXZ) 在函数_main C:\ Users \ CS \ documents \ visual studio中引用 2012 \项目\ testv \ testv \ testv.obj
错误10错误LNK2019:未解析的外部符号 WinMain @ 16 在函数_ _tmainCRTStartup C:\ Users \ CS \ documents \ visual中引用 studio 2012 \ Projects \ testv \ testv \ MSVCRTD.lib(crtexew.obj)
错误11错误LNK1120:10未解决 外部C:\ Users \ CS \ documents \ visual studio 2012 \项目\ testv \调试\ testv.exe
我认为问题与创建项目有关。从 Win32 Project 创建一个空项目后,我点击了添加新项并选择了 .cpp 类型。我不知道它是否正确。
是否有解决问题的想法?
答案 0 :(得分:1)
您收到该错误是因为您在一行中输入了所有库名称而没有分隔符。它将整个列表作为一个库。单击省略号,然后输入由换行符分隔的每个库名称。
使用ws2_32.lib
而不是wsock32.lib答案 1 :(得分:0)
您正在收到该错误,因为您正在输入所有库 一行没有分隔符的名称。它将整个列表视为 一个图书馆。单击省略号,然后输入每个库名称 用换行符分隔。
使用ws2_32.lib
而不是wsock32.lib
只是添加。要分隔每个库,请在每个库名称(例如 libraryname.lib; libraryname.lib )后面加一个分号,或者只需在文本框中按Enter键转到下一个库因此,Visual Studio会将其作为下一行读取,您输入的任何内容都会将其视为库名。
示例:强>
libraryname.lib - 现在,按Enter键进入下一行,VS将识别库名。 libraryname.lib - 这是下一行和您的新库
我正在学习C ++并使用Microsoft Visual Studio 2015 ^ _ ^