浦东做网站如何在社交网站做销售
news/
2025/9/25 22:37:27/
文章来源:
浦东做网站,如何在社交网站做销售,上海网站建设 销售,怎样做医疗网站不违法一、介绍部分 (win7 下的 GUI 效果图见 本篇文章的最后部分截图2张)wxWidgets是一个开源的跨平台的C构架库(framework)#xff0c;它可以提供GUI(图形用户界面)和其它工具。目前的2.x版本支持所有版本的Windows、带GTK或Motif的Unix和MacOS。相当于大家熟悉的 VC。二、wxWidge…一、介绍部分 (win7 下的 GUI 效果图见 本篇文章的最后部分截图2张)wxWidgets是一个开源的跨平台的C构架库(framework)它可以提供GUI(图形用户界面)和其它工具。目前的2.x版本支持所有版本的Windows、带GTK或Motif的Unix和MacOS。相当于大家熟悉的 VC。二、wxWidgets的安装与编译二.1 基础部分编译是少不了的操作即使你下载的是安装包因为这个安装包只是相当于自解压包我们还需要将其进行编译才能得到wxWidgets在Windows可用的库。如果你在参考了许多编译文档或教程之后发现还是没有编译出某些库文件如wxbase28u_gcc_custom.dlllibwxmsw28ud_gllibwxmsw28u_gllibwxmsw28u_dbgridlibwxmsw28ud_dbgridwxbase28ud_gcc_custom.dllwxbase28u_gcc_custom.dll(部分文件可能会有扩展名的缺少而不同)这里使用的版本是wxWidgets 2.8.12(上面文件名中的28也是指这前两位版本号2.8版本2.9的同理)在本文发表之时wxWidgets 2.8.12是当前的稳定版。如下Latest Development Release: 2.9.5Current Stable Release: 2.8.12Previous Stable Release: 2.6.4先检查一下系统的环境变量中有无Mingw32(32位)的bin目录的值集成安装的大致安装位置是C:\CodeBlocks\MinGW\bin 要用到的是其中的mingw32-make.exe 。环境变量的设置此外设置用户变量(系统变量要重启才行并且对所有用户都有效)只要简单注销一下当前用户即可生效(而用path命令设置有时不生效)。在这里说一下一般会用到的与本IDE设置有关的环境变量1 是编译环境用到的bin目录即大致类似于C:\CodeBlocks\MinGW\bin2 调用库文件时用到的编译完成后放置生成的库文件的目录。这个目录下面会说到。解压下载的压缩包并进入 wxMSW-2.8.12\build\msw子目录打开命令行切换到这一目录(或在这个文件夹空白处按住Shift并右键选择“在此处打开命令窗口”直接进入)。因为前面设置好了环境变量(不论是用户级的还是系统级的最后再打开cmd.exe执行path检查一下是否添加成功)编译时用到的命令如果用它就按下文件相关修改 config.gcc 文件后执行mingw32-make.exe -f makefile.gcc (无参数参数写在config.gcc中)其中的 -f 是 file为mingw32-make.exe指定要编译的文件 makefile.gcc。如果不写在配置文件中则可以写成如下示例(只是动态库SHARED1)mingw32-make -f makefile.gcc BUILDrelease SHARED1 UNICODE1 (release 版本)mingw32-make -f makefile.gcc BUILDdebug SHARED1 UNICODE1 (debug 版本)下面是完整的config.gcc文件内容在看之前请先略看并跳到下面的内容但在正式编译时请细看下面内容即使你用的是加了参数的编译方法如上面2条命令可能会无法编译出某些文件。图形界面开发要考虑的地方很多入门后自然更加熟练# # This configuration file was generated by# Bakefile0.2.9 (http://www.bakefile.org)# Beware that all changes made tothisfile will be overwritten next# time you run Bakefile!##-------------------------------------------------------------------------# These are configurable options:#-------------------------------------------------------------------------#设置是否共享生成的库文件(先默认如下)# Compiler flags to link shared libraryLINK_DLL_FLAGS? -shared# Compiler flags to link loadable moduleLINK_MODULE_FLAGS? -shared#编译器(这个不能动其它的编译器也有对应的 config.***文件)# C compilerCCgcc# CcompilerCXX g#下面的几条与编译时占用的CPU等系统资源有关可能。# Standard flagsforCCCFLAGS?# Standard flagsfor CCXXFLAGS?# Standard preprocessor flags (commonforCC and CXX)CPPFLAGS?# Standard linker flagsLDFLAGS?# The C preprocessorCPP? $(CC) -E#静态库0 、动态库 1# What type of library to build? [0,1]SHARED? 0#没了解(默认)# Build wxUniversal instead of native port? [0,1]WXUNIV? 0#支持宽字符集必须是1# Compile Unicode build of wxWidgets? [0,1]UNICODE? 1# Use MSLU library when building Unicode version. [0,1]MSLU? 0#编译的二进制的类型Debug、Release(这两个都要编译方便以后用到)# Type of compiled binaries [debug,release]BUILD?release#这里说一下下面的参数能开的基本上都开了但个别的会说明一下作用。# Should debugging info be includedin the executables? The defaultvalue#default means that debug info will be included if BUILDdebug# and not includedif BUILDrelease. [0,1,default]DEBUG_INFO? default# Should __WXDEBUG__ be defined? The default value defaultmeans that it will# be definedif BUILDdebug and not defined if BUILDrelease. [0,1,default]DEBUG_FLAG? default#是编译分开的多个库还是一个大的整体(如果选择1会无法得到目标库生成的库是以monolithic 为前缀的而且很大)# Multiple libraries or single huge monolithic one? [0,1]MONOLITHIC? 0#图形界面少不了# Build GUI libraries? [0,1]USE_GUI? 1# Build wxHTML library (USE_GUI must be1)? [0,1]USE_HTML? 1# Build multimedia library (USE_GUI must be1)? [0,1]USE_MEDIA? 1# Build wxXRC library (USE_GUI must be1)? [0,1]USE_XRC? 1# Build wxAUI library (USE_GUI must be1)? [0,1]USE_AUI? 1# Build wxRichTextCtrl library (USE_GUI must be1)? [0,1]USE_RICHTEXT? 1# Build OpenGL canvas library (USE_GUI must be1)? [0,1]USE_OPENGL? 1# Build ODBC database classes (USE_GUI must be1)? [0,1]USE_ODBC? 1# Build quality assurance classes library (USE_GUI must be1)? [0,1]USE_QA? 1# Enable exceptionsin compiled code. [0,1]USE_EXCEPTIONS? 1# Enable run-time type information (RTTI) in compiled code. [0,1]USE_RTTI? 1# Enable threadingin compiled code. [0,1]USE_THREADS? 1#下面这个参数在前面如果设置了编译类型是Relesse是设置为1Debug时为0(我在编译时后者Debug为1时中断了)# Enable wxCairoContextfor platforms other than Linux/GTK. [0,1]USE_CAIRO? 1# Link with gdiplus.lib? (Needed for wxGraphicsContext, will also set wxUSE_GRAPHICS_CONTEXT) [0,1]USE_GDIPLUS? 1# Isthis official build by wxWidgets developers? [0,1]OFFICIAL_BUILD? 0# Usethisto name your customized DLLs differentlyVENDOR?custom#WX_FLAVOUR?#WX_LIB_FLAVOUR?#下面的大概是特殊设置# Name of your custom configuration. This affects directory#where object files are stored as well asthe location of# compiled .lib files and setup.h under the lib/toplevel directory.CFG?# Compiler flags needed to compile test suiteintests directory. If you want# to run the tests,setit so that the compiler can find CppUnit headers.CPPUNIT_CFLAGS?# Linker flags needed to link test suiteintests directory. If you want# to run the tests, include CppUnit library here.CPPUNIT_LIBS?# Version of C runtime library to use. You can changethisto#static if SHARED0, but it is highly recommended to not do# itif SHARED1 unless you know what you are doing. [dynamic,static]RUNTIME_LIBS?dynamic# Set the version of your Mingw installation here.#3 ...... this is for Mingw 2.0or newer (comes with gcc3)#2.95 ... for Mingw 1.1 or any of the older versions [3,2.95]GCC_VERSION? 3config.gcc 配置文件结束动态库dll vs. 静态库lib从编译结果上看C库可以被编译成“静态”链接库也可以被编译成“动态”链接库。所谓“链接库”的意思就是库自身并不可以被执行。应用程序才是可执行的为了写一个应用程序可能需要用到很多功能其中一些功能应用程序的作者并不用自己实现而是直接使用链接库即可。把应用程序与库在功能上进行合并的过程就叫做过“链接”。如前所有述有两种链接方法静态或动态。所谓“静态链接”就是直接把库文件和可执行文件合二为一形成一个文件。这种情况下发布可执行文件时就不必另外附加那个功能库了因为事实上那个功能库已经“嵌入”在可执行文件中(可执行文件的体积变大了)。静态链接方法适用于功能简单应用程序。所谓“动态链接”是指程序在运行时才会去寻找动态库中所需要的功能然后在内存中加载入动态库。这种情况下可执行文件与动态库独立存在没有合成一体在发布程序时你必须两个文件一起安装到用户的电脑上。动态链接方法适用于相对复杂的应程序通常这种情况下为了方便用户安装我们会提供一个安装程序。 另外在Linux系统中“动态链接库”通常被称为“共享库”(文件扩展名也改为.so)这也说出了“动态链接”这项技术带来的另一个好处多个应用程序可以共用一个独立的动态库。如果把盖房子想像成写程序的话当我们需要建造其中的自来水系统时可以把水库当成是一种功能链接库。那么当我们是在乡下自建一座独门独户的小楼那么可以采用“静态链接”的方法即在自家楼里砌个水库自个儿使用当然这个自建的水库往往增加了小楼的体积。来到城里城里的一座高楼住着千家万户这时“动态链接”技术派上用上所有住户共享一个水库当你需要水时打开水龙头水就从外部“动态”而来。为了方便以后使用今天wxWidgets将我们编译成至少两个版本即动态库和静态库 debug 和 release 2x24其它参数不变。而在CodeBlocks的工具栏中“build target”可以选择你当前的编译类型并且相关的信息可能也与这有关具体去分析我们一个也不能少。DEBUG vs. RELEASEDEBUG 指“调试”版。表示编译出所库含有调试信息这自然会让库变得很大但有利于我们写程序时跟踪也发现错误。RELEASE 指 “发行”版。表示我们认定程序写得差不多了(能解决的问题都解决了错误相对比较少)这时调试信息就不需要了库恢复它原来的大小。为了方便调试与发而程序DEBUG和RELEASE同样的我们一个也不能少。UNICODE vs. 非 UNICODE传统C程序中对普通的1个英文字符采用1个字节表示而对1个汉字采用两个字节表示。比如有这样一句话“文件c:\abc\efg\我的文档\奥运知识ABC\乒乓球基础知识.txt无法打开”假设计数以0开始那么例子中那句话第0个字符是“文”字的前半个字符第1个字符则是“文”字的后半个字符。事实上半个汉字是没意义的它只会为字符串处理上带来困难。比如假设我们要把上述那句话显示在显示在某个窗口上但由于窗口太小显示不下这时我们希望将那句话的截掉一点结果类似“文件c:\abc\efg\我的文档\奥运知识ABC\乒乓球基...”这个过程看似简单但其实复杂如果不进行特殊的处理程序很要可能会在某个汉字的半个字符处截断那句话而1个汉字一旦被“腰斩”了剩下的那个半个汉字无论是上半身还是下半身就会在屏幕上显示乱码。解决这个问题方法有很多种其中采用“UNICODE”是个相对通行而简单的办法并且解决得比较彻底。“UNICODE”的方案说起来也简单就是用两个字节甚至四个字节去表达一个字符(无论是英文字符还是中文、日语等)。相关知识 结束二.2 目录知识要处理汉字所以在编译过程我们只选择UNICODE的方案故会编译 4 次。每次30分钟左右计算机配置高的话可以同时进行两次。由于只是需最终编译的库推荐的方法是将目录 wxMSW-2.8.12/ 复制4份每一份均作相应的编译。 然后将目录进行合并我们最终需要的不是build目录下的文件而是程序根目录 lib 中的库文件。参考下面的表格就能得出库文件的命名机制见表格中的【注】所以4次编译不会出现库文件重名只是相似。编译完成后在msw目录下生成的目录如表格返回到 wxMSW-2.8.12\lib 目录我们发现多了 gcc_lib(静态)或gcc_dll()动态库类型静态0动态1编译时下面目录下会生成子目录wxMSW-2.8.12\build\msw\编译时下面目录下会生成子目录wxMSW-2.8.12\libUnicodedebug动态gcc_mswuddllgcc_dll静态gcc_mswudgcc_librelease动态gcc_mswudllgcc_dll静态gcc_mswugcc_lib上面3项知识详见下文【注】gcc_msw(gcc编译的windows库)uunicodeddebugdll动态lib静态(略写)rrelease(略写)gcc_dll的目录下有mswu 或 mswudgcc_lib的目录下有mswu 或 mswud相关目录及操作 的截图参考1 编译过程刚刚开始即被我无情 Ctrl C 终止。提示编译前要先考虑是否如上面示例修改 config.gcc 文件。时间30分钟左右。2 msw 目录下的两个主要文件 配置 - config.gcc、及 makefile.gcc 。目录 gcc_mswu 在编译之前不存在(显然这是编译的 Unicode 静态库 Release)3 lib 目录下编译后的文件目录结构目录“_sc”及下面的3个文件在不同的编译条件下不会变化。这里要提到的是前面在环境变量部分没有讲完的第2个环境变量虽然不是必须但是这种解决问题或排除程序报错的方法是很重要的。参考下面的图片一一说来。4 进入上图的 gcc_lib 里面的目录结构如下图包括各种 (Unicode 静态库 Release)其中的 mswu 目录下的文件有时也会因为缺少而报错比如其子子目录中的 setup.h 。5 如果大家采用我的方法将静态库、动态库分别合并到 gcc_lib 及 gcc_dll 下图就是相应结果关于此处涉及到的环境变量问题在这里细说一下按照下图的库文件放置方法在编译时会报错大多是找不到某某文件而你到这个目录下查找却发现文件在那呀CodeBlocks 创建 Project 时会的步骤要求你选择 wxWidgets 的存放目录编译时编译器就会从这个目录下找 lib 下的库文件但不会找子目录下的文件。因而如下图放置库文件会提示缺少相关文件。那么怎么办有两种办法。1 将 gcc_lib 及 gcc_dll 加到环境变量中2 直接把 gcc_lib 及 gcc_dll 里面的文件及目录全部移动到 lib 根目录下。不上图了移动时不用担心文件或目录重名。这种方法是重点前提是你编译出了这个文件编译时提示找不到某文件就将其放置在环境变量中。其实初期使用时担心的都是缺少文件的报错这你真心没办法。So花点时间在编译工作上吧没有坏处的三、供参考的相关资料http://wiki.codeblocks.org/index.php?titleWxSmith_tutorial:_Hello_world (图形界面重点入门参考全英文。虽然与本篇版本不同但不出错。用 wxFormBuilder就不如用集成的wxSmith知其一则知它们)四、相关问题罗列1 编译器版本与库文件的关系前面也有提到如果使用了别人编译的库最好就要用编译这个库使用的编译器版本即使只是版本号不同。这里也发现为什么linux下提供的程序多为源码使用时需要编译有编译器版本与库文件不对应的原因就像一台组装机必需要考虑硬件不兼容问题。而这个问题在windows及MacOS下很少因为这些平台下的程序所需调用的库大多内置在了程序中。虽然体积会大点却得到了体验。回想一下桌面版本linux 六个月一次升级大多数程序都要同时重新编译拿播放器 VLC 来说在Fedora 上就要为是Fedora 18 及 Fedora 19 而分别编译发行版本(这个可能会不用在本机编译了)而服务器版Linux很少升级是为避开这个问题服务器上的各种服务器软件怎么能够奔命于编译、编译、再编译的过程而连基本服务都没做好。导致原因不能与它的自由开源脱开关系。所以Linux会有那么一个阶段分久必合大家坐下来 制定一个ISO标准这为的是长远发展但不能失去了它的根本自由、开源。我曾经与朋友打了这么一个比喻linux像组装机各种配件自由搭配只要没有兼容性问题Windows 则是品牌机办公、影音、游戏应有尽有。物尽其用最终提供服务的是应用程序而它们跑在系统的大车之上。2 64位 或 32位 系统的影响虽说用的是32位的编译器可编译出来的程序在我64拉win7上部分效果不能实现而拷贝到32位win7上运行良好(如果缺少文件就在本机上复制它到目标电脑system32目录这个目录是系统默认加入到环境变量中的)。不过可能只是一面之词毕竟只是我一台机子上的现象而我的电脑用运行着 HIPS(Comodo防火墙内置)3 网上有一种 wxpack 是库文件编译好的但现在新版本的没有编译了vc、gcc编译都有安装后数个G的体积但问题是还是会出现这里列出的第 1 条问题而且那个版本的编译器不容易配置。4 这一条不是什么问题而是在 wxMSW-2.8.12 根目录有一个 samples 子目录里面存放的是图形界面的若干个源码示例没错需要编译。在 samples 目录下也有一个 makefile.gcc编译就像编译库文件一样 命令行下切换到这下目录使用命令 mingw32-make.exe -f makefile.gcc只是这个 makefile.gcc 是全部编译 samples 目录下的所有工程示例(一个子目录就是一个工程)。而单个编译时要进入相应工程目录同样有 makefile.gcc 文件操作同上可能并不是每个都能编译成功。编译成功的对应目录下会有 gcc_mswu 其中有对应的 exe 可执行文件并拷贝到其它电脑运行一下。示例 calendar示例 auiwxWidgets 工程的具体创建过程本文不作叙述。文中部分内容可能会有所不同请以操作为准如果希望本文更加完善请告知相关内容并在此对文中引用的文章的作者表示感谢本文可能还会更新...
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/917639.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!