导航:首页 > 源码编译 > wxwidgets静态编译的文件大么

wxwidgets静态编译的文件大么

发布时间:2022-06-24 09:44:46

1. 怎么在codeblocks中安装wxwidgets图形库

可以,wx可以编译成单个exe执行文件。 但前提是你的wx本身是被build编译成静态库lib的版本,而非dll版本。 如果没有,就需要找到源码单独编译一遍wx。 编译wx一般要注意是否静态、是否unicode,是否包含c++运行库等几个选项。

2. 怎么编译wxwidgets

1 、打开工程 wxWidgets-2.8.7\build\msw\wx_dll.dsw ,将其转换为 vs2005 工程关闭保存,再打开工程 wx_dll.sln 。
2 、将解决方案配置更换为 DLL Unicode Debug 。
3 、依次单独编译 wxregex 、 wxzlib 、 wxexpat 、 wxtiff 、 base 、 wxjpeg 、 wxpng 、 core 、 odbc 、 xml 、 adv 、 html 、 net 、 gl 、 dbgrid 、 qa 、 richtext 、 aui 、 xrc 、 media 库。
其中目前版本 odbc 、 gl 、 dbgrid 工程并不完善,出现编译错误忽略即可。
4 、如果以上顺利通过,那么将得到以下我们需要的库文件
编译预定义环境
wxWidgets-2.8.7\lib\vc_dll\mswud\wx\ setup.h
wxWidgets-2.8.7\lib\vc_dll\mswud\wx\msw\ rcdefs.h
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_net_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_odbc_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_vc_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_xml_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_adv_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_aui_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_core_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_gl_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_html_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_media_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_qa_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_richtext_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_xrc_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud.lib
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_net.lib
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_xml.lib
wxWidgets-2.8.7\lib\vc_dll\wxexpatd.lib
wxWidgets-2.8.7\lib\vc_dll\wxjpegd.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_adv.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_aui.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_core.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_html.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_media.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_qa.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_richtext.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_xrc.lib
wxWidgets-2.8.7\lib\vc_dll\wxpngd.lib
wxWidgets-2.8.7\lib\vc_dll\wxregexud.lib
wxWidgets-2.8.7\lib\vc_dll\wxtiffd.lib
wxWidgets-2.8.7\lib\vc_dll\wxzlibd.lib
注意:将以上文件按照文件按照原目录相对结构拷贝到要制作的库路径下,并将 wxWidgets-2.8.7\ include 目录也拷贝到其目录下,以后要使用只需要包含这些路径即可。
为了以后开发方便,设定的开发库路径为:
wxLib\include
wxLib\Debug\mswud\wx\msw
wxLib\Debug

3. 如何编译wxWidgets示例程序

wxWidgets
wxWidgets是一个程序开发框架/库, 允许你在Windows、Mac、linux中使用相同的代码跨平台开发。它主要用C++写成,但也可以与其他语言绑定比如Python、Perl、Ruby。

本教程中我将向你展示如何在基于Debian的linux中如Ubuntu和Linux Mint中编译wxwidgets 3.0+。
从源码编译wxWidgets并不困难,仅仅需要几分钟。库可以按不同的方式来编译,比如静态或者动态库。

1. 下载 wxWidgets
第一步你需要从wxwidgets.org下载wxWidgets源码文件。
做完后,解压到目录。

2. 设置编译环境
要编译wxwidgets,我们需要一些工具包括C++编译器,在Linux上是g++。所有这些可以通过apt-get工具从仓库中安装。
我们还需要wxWidgets依赖的GTK开发库。
$ sudo apt-get install libgtk-3-dev build-essential checkinstall
这个叫做checkinstall的工具允许我们为wxwidgets创建一个安装包,这样之后就可以轻松的使用包管理器来卸载。

3. 编译 wxWidgets
进入到wxWidgets解压后的目录。为了保持清洁,创建一个编译用的目录。
$ mkdir gtk-build
$ cd gtk-build/
现在运行configure和make命令。每个将花费一些时间来完成。
$ ../configure --disable-shared --enable-unicode
$ make
"--disable-shared"选项将会编译静态库而不是动态库。
make命令完成后,编译就成功了。是时候安装wxWidgets到正确的目录。
更多信息请参考install.txt和readme.txt,这可在wxwidgets中的/docs/gtk/目录下找到。

4. 安装 checkinstall
现在我们不使用"make install"命令,我们使用checkinstall命令来创建一个wxwidgets的deb安装包。运行命令:
$ sudo checkinstall
checkinstall会询问几个问题,请保证在提问后提供一个版本号,否则将会失败。
完成这一切后,wxWidgets就安装好了,deb文件也会创建在相同的目录下。

5. 追踪安装的文件
如果你想要检查文件安装的位置,使用dpkg命令后面跟上checkinstall提供的包名。
$ dpkg -L package_name
/.
/usr
/usr/local
/usr/local/lib
/usr/local/lib/libwx_baseu-3.0.a
/usr/local/lib/libwx_gtk3u_propgrid-3.0.a
/usr/local/lib/libwx_gtk3u_html-3.0.a
/usr/local/lib/libwxscintilla-3.0.a
/usr/local/lib/libwx_gtk3u_ribbon-3.0.a
/usr/local/lib/libwx_gtk3u_stc-3.0.a
/usr/local/lib/libwx_gtk3u_qa-3.0.a
/usr/local/lib/libwx_baseu_net-3.0.a
/usr/local/lib/libwxtiff-3.0.a

6. 编译示例
编译wxWidgets完成后就可以马上编译示例程序了。在相同的目录下,一个新的sample目录已经创建了。
进入它并运行下面的命令
$ compile samples
$ cd samples/
$ make
make命令完成后,进入sample 子目录,这里就有一个可以马上运行的Demo程序了。

7. 编译你的第一个程序
你完成编译demo程序后,可以写你自己的程序来编译了。这个也很简单。
假设你用的是C++,这样的话你还可以使用编辑器的高亮特性。比如gedit、kate、kwrite等等。或者用全功能的IDE像Geany、Codelite、Codeblocks等等。
然而你的第一个程序只需要用一个文本编辑器来快速完成。
如下:
#includewx.h>
classSimple:public wxFrame
{
public:
Simple(const wxString& title)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(250,150))
{
Centre();
}
};
classMyApp:public wxApp
{
public:
boolOnInit()
{
Simple*simple =newSimple(wxT("Simple"));
simple->Show(true);
returntrue;
}
};
wxIMPLEMENT_APP(MyApp);
现在保存并用下面的命令编译。
# compile
$ g++ basic.cpp `wx-config --cxxflags --libs std`-o program
# run
$ ./program

4. cygwin和mingw的区别

Unix下编译通过的C代码,在win32下编译是不能通过的 ,当然Unix 和win32的API都是符合标准C,也就是说,大多数函数调用在unix和win32下是相同的.但是,unix有自己一些独特的API(如fork,spawn,signals,select,sockets等),如果代码中使用了这些API,在win32下当然找不到对应的库.
但是,这些API的功能在win32中也能实现,也许你已经发现了一个能让window编译Unix风格代码的方法:
1.修改编译器,让window下的编译器把诸如fork的调用翻译成等价的形式--这就是mingw的做法.
2.修改库,让window提供一个类似unix提供的库,他们对程序的接口如同unix一样,而这些库,当然是由win32的API实现的--这就是cygwin的做法.

MinGW相比CygWin/gcc来讲,更加贴近win32。因为它几乎支持所有的Win32API。它所连接的程序,不需要任何第三方库即可运行。
CygWin/gcc,其实这是两个东西。CygWin是一个让Windows拥有Unix-like环境的软件。而gcc就是安装在CygWin上的编译器。
CygWin/gcc与MinGW的最大区别在于:使用CygWin/gcc可以在Windows下调用unix-like的API,(如fork,spawn,signals,select,sockets等)。也就是说Cygwin是运行在Windows下的,但是她使用的是Unix-like系统的函数和思想。由于这个区别,导致的结果就是用CygWin/gcc编译出来的程序可以无缝的运行在*nix环境下。但是如果调用了unix特有的API函数,在windows环境下不能正常运行,如果想在windows下正常运行的,就必须依赖cygwin1.dll,速度上会有些影响。
而用MinGW编译出来的程序,如果源代码里面调用了unix环境的API,则MinGW会把这些对UNIX的API调用翻译成win32下等价的形式。同时这个程序是不能在windows下运行的。
说白了,如果你是想在windows环境下开发linux运行程序,那么CygWin/gcc是你的不二之选。
而如果你想开发的是windows运行程序,并且追求速度,那么二者相比而言,MinGW是更好的选择

我没有用过这两个工具,只是有点想选择一个来用,于是在网上比较一下两者有啥不同,然后选一个适合自己的。过程中,我发现网上一份文章可能被多个人转载,被多个人稍微修改后当成自己的随笔写出,误认不浅。
说一点,什么cygwin编译的程序可以无缝在linux上运行,根本就不能这么理解。
cygwin官方的一个定义是Cygwin is not a way to run native linux apps on Windows. You have to rebuild your application from source if you want it to run on Windows.
翻译过来就是
cygwin不是让linux程序能在windows上运行的方法,如果你想要让linux程序能在windows运行,那么你只有用cygwin来重新编译一下源文件。
这句话完全反驳了无缝运行在linux的说法。就是说你在linux上编译的elf程序不能直接拿到cygwin上运行,同样,你用cygwin编译的程序也不是linux的elf格式,而是exe格式,exe是无法在linux上运行的。
cygwin和mingw都是为用户提供在windows操作系统使用GNU工具的方法,使得在windows上可以编译为linux写的c源代码并运行(让你可以用signal等linux才有的api)。真正的不同在于
1,cygwin大,mingw小
2,cygwin编译后的exe需要cygwin1.dll作为支持,而mingw不需要就可以直接运行,因为有中间层所以cygwin慢,mingw快。
3,cygwin包含的内容更全面,能编译通过的linux源文件更多,mingw的min是minimalist所以能编译通过的更少。但,不是全部,就是说别指望你可以把任何为linux写的源代码在cygwin或mingw编译通过并运行。

What Is Cygwin?

Cygwin is a Linux-like environment for Windows. It consists of two parts: A DLL (cygwin1.dll) which acts as a Linux API emulation layer providing substantial Linux API functionality.
A collection of tools which provide Linux look and feel.

The Cygwin DLL currently works with all recent, commercially released x86 32 bit and 64 bit versions of Windows, with the exception of Windows CE.
Note that the official support for Windows 95, Windows 98, and Windows Me will be discontinued with the next major version (1.7.0) of Cygwin.

What Isn't Cygwin?

Cygwin is not a way to run native linux apps on Windows. You have to rebuild your application from source if you want it to run on Windows.
Cygwin is not a way to magically make native Windows apps aware of UNIX ? functionality, like signals, ptys, etc. Again, you need to build your apps from source if you want to take advantage of Cygwin functionality.

MinGW: A collection of freely available and freely distributable Windows specific header files and import libraries combined with GNU toolsets that allow one to proce native Windows programs that do not rely on any 3rd-party C runtime DLLs.
MinGW:根据我的理解,它是一个Windows下的编译器(实际上是一系列开发工具)。与Windows下其它编译器不同的是,MinGW与Linux下广泛使用的GNU(基本上)完全兼容,这意味着,在Linux下如何编译源代码,在MinGW中也可以以完全相同的方式编译。
我个人以为,MinGW的出现是有原因的:有些Linux下的开发人员(比如开源阵营)发布的源代码通常只提供Linux下的编译方式,而不提供Windows下的编译方式(这可能与其不熟悉windows操作系统有关),但确实有不少用户需要在在Windows下编译使用此源代码。这在种情况下,如果Windows用户想用VC、BC等编译器编译该源代码,必须重写Makefile(各种编译器所支持的Makefile不尽相同),工作量比较大不说,还很难保证不出错。MinGW的出现,提供了两个平台下的“跨平台编译方案”。MinGW与MSYS相配合,连./configure都有了。与GNU不同的是,MinGW编译生成的是Windows下的可执行文件(.exe)或库文件(.dll,.lib)——不过编译过程中的的中间文件仍然是.o文件,而不是.obj文件(这当然无所谓了,中间文件嘛,编译完成后就没有用了)。MinGW好像是在Cygwin基础上发展而来的。顺便说一下Cygwin,它与MinGW在想法上基本是一致的,两者相比,Cygwin是重量级的(需下载50M以上直至数百兆不等,安装后占用空间可达1G),MinGW是轻量级的(需下载的文件只有20M,安装后70M左右),这是单纯从体积上说的,另外Cygwin现在据说也不是完全免费的了。
wxWidgets-2.6.2在Windows下的编译方式。用VC编译的话,有两种方式:VC工程,Makefile。前者就不用说了,用VC打开*.dsw文件,F7就可以了。这里说一下Makefile的编译方式,首先进入命令行窗口(cmd.exe 或 command.exe),切换路径到wxWidgets源代码所在目录下的 build/msw 子目录,执行“nmake -f makefile.vc”即可。用MinGW编译的话,基本上与前面类似,也是进入命令行窗口(cmd.exe 或 command.exe),切换路径到wxWidgets源代码所在目录下的 build/msw 子目录,只是执行的命令行是“mingw32-make -f makefile.gcc”。最终生成的库文件位于lib目录中。当然,编译之前可能需要设置一下,比如指定编译为动态库(DLL)还是静态库(LIB),或者是否采用UNICODE,等等,设置方式就是修改 build/msw 子目录中的 config.vc 或 config.gcc 文件。
VC6和MinGW相比,两者在编译速度,以及在编译后的文件的大小方面都有较大不同。根据我编译wxWidgets时所做的简单统计,VC6的编译速度比MinGW至少快一倍,VC6编译生成的动态库DLL文件比MinGW小一倍左右,VC6编译生成的静态库LIB文件比MinGW要大不少(大约是1.5倍)。下面的图片两者编译生成的文件大小的对比,左侧是VC6生成的,右侧是MinGW生成的,图一是编译生成动态库DLL的情况,图二是编译生成静态库LIB文件的情况:

总起来说,在Windows系统下,还是用VC编译比较合适,没办法的情况下才会选择MinGW。

5. wxwidgets用codeblocks编译器编译出的程序必须在加上dll才能独立运行, 怎么用静态编译

首先,你要编译wxwidgets,生成静态的wx库
其次,在codeblocks里使用wx向导建立wx工程的时候,在选择库设定的时候,不要勾选使用wxWidget dll选项即可,默认就会使用静态库链接
codeblocks,wx开发有问题,欢迎到网络codeblocks贴吧找我

6. mingw wxwidgets 使用问题

你如何用的是msys,有wx-config的话。就用
g++ <文件名> -o <输出文件名> $(wx-config --libs --cxxflags)

如何你不用msys,或者没有wx-config。
就找到wxWidgets的库文件存放的目录,和头文件目录。
g++ <文件名> -o <输出文件名> -I<头文件目录> -L<库文件存放目录>
加上所有wxWidgets编译出的的库文件

7. 使用CodeBlocks软件wxWidgets的编译教程

方法/步骤
1、中间安装步骤省略,直接Next就行了,到了下图,修改你要安装的路径,要记下来,点击Install,安装完成后,设置环境变量,在用户的Path中添加安装根目录+\MinGW\bin;和安装根目录\MinGW\mingw32\bin。
2、wxWidgets的安装
跟codeblocks的安装一样,获得系统管理员权限进行安装,运行如下显示,直接Next。
3、Next之后,中间步骤一直Next就行,直到跳到设置安装目录,如下图,也要记住安装目录,虽然不要设置环境变量,但是在wxWidgets编译的时候需要用到安装路径。
4、编译wxWidgets
前面工作都做好了,下面就简单了,首先利用Dos命令行窗口进入wxWidgets安装的根目录+\build\msw\文件夹,如下图所示,我的wxWidgets安装的在C:\wxWidgets盘,编译命令如下,逐个编译即可完成
mingw32-make
-f
makefile.gcc
BUILD=release
HARED=1
MONOLITHIC=1
UNICODE=1
(release
版本)
mingw32-make
-f
makefile.gcc
BUILD=debug
SHARED=1
MONOLITHIC=1
UNICODE=1
(debug
版本)
以上就是专题栏小编带来的CodeBlocks教程,更多教程请看“http://www.zhuantilan.com/zt/CodeBlocks/”

8. 如何编译wxWidgets

1 、打开工程 wxWidgets-2.8.7\build\msw\wx_dll.dsw ,将其转换为 vs2005 工程关闭保存,再打开工程 wx_dll.sln 。
2 、将解决方案配置更换为 DLL Unicode Debug 。
3 、依次单独编译 wxregex 、 wxzlib 、 wxexpat 、 wxtiff 、 base 、 wxjpeg 、 wxpng 、 core 、 odbc 、 xml 、 adv 、 html 、 net 、 gl 、 dbgrid 、 qa 、 richtext 、 aui 、 xrc 、 media 库。
其中目前版本 odbc 、 gl 、 dbgrid 工程并不完善,出现编译错误忽略即可。
4 、如果以上顺利通过,那么将得到以下我们需要的库文件
编译预定义环境
wxWidgets-2.8.7\lib\vc_dll\mswud\wx\ setup.h
wxWidgets-2.8.7\lib\vc_dll\mswud\wx\msw\ rcdefs.h
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_net_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_odbc_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_vc_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_xml_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_adv_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_aui_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_core_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_gl_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_html_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_media_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_qa_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_richtext_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_xrc_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud.lib
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_net.lib
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_xml.lib
wxWidgets-2.8.7\lib\vc_dll\wxexpatd.lib
wxWidgets-2.8.7\lib\vc_dll\wxjpegd.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_adv.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_aui.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_core.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_html.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_media.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_qa.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_richtext.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_xrc.lib
wxWidgets-2.8.7\lib\vc_dll\wxpngd.lib
wxWidgets-2.8.7\lib\vc_dll\wxregexud.lib
wxWidgets-2.8.7\lib\vc_dll\wxtiffd.lib
wxWidgets-2.8.7\lib\vc_dll\wxzlibd.lib
注意:将以上文件按照文件按照原目录相对结构拷贝到要制作的库路径下,并将 wxWidgets-2.8.7\ include 目录也拷贝到其目录下,以后要使用只需要包含这些路径即可。
为了以后开发方便,设定的开发库路径为:
wxLib\include
wxLib\Debug\mswud\wx\msw
wxLib\Debug

9. 为什么wxWidgets静态编译出来的EXE文件比Delphi静态编译出来的EXE大很多

这个是编译工具的事,别说是空窗口,就是空语句编译出的大小还不一样呢。
因为他们的编译方法不同,具体有什么不同就太专业了,我也说不清楚,呵呵

10. wxWidgets问题, IDE是Codeblocks。

可以,wx可以编译成单个exe执行文件。
但前提是你的wx本身是被build编译成静态库lib的版本,而非dll版本。
如果没有,就需要找到源码单独编译一遍wx。
编译wx一般要注意是否静态、是否unicode,是否包含c++运行库等几个选项。

阅读全文

与wxwidgets静态编译的文件大么相关的资料

热点内容
怎么投诉途虎app 浏览:35
安卓重力感应怎么关 浏览:718
我的世界ios怎么建服务器地址 浏览:757
服务器端口ip都是什么意思 浏览:260
华为主题软件app怎么下 浏览:837
我们的图片能够收藏加密吗 浏览:978
mysql空值命令 浏览:213
python整点秒杀 浏览:882
怎么样互传app 浏览:292
python分布式抓包 浏览:36
轻量级php论坛 浏览:342
如何查看应用存储在哪个文件夹 浏览:436
app开发项目范围怎么写 浏览:76
androidjms 浏览:843
弹珠连贯解压 浏览:243
程序员的网课 浏览:904
广东加密狗防拷贝公司 浏览:450
rtf转换pdf 浏览:350
单片机退出中断 浏览:142
可以对单个内容加密的便签 浏览:825