我一直试图让wxWidgets在Cygwin上工作。到目前为止,我通过使用cygwin安装程序提供的mingw编译器取得了成功
构建似乎工作正常。我使用的配置消息是:
configure --host=i686-w64-mingw32 --build=i686-pc-cygwin --enable-static --disable-shared
之后,我运行了make并进行安装,没有出错。
接下来,我从a tutorial抓住了一个例子并运行:
i686-w64-mingw32-g++ -c -o hello_world.o hello_world.cpp CXX_FLAGS
i686-w64-mingw32-g++ -o a hello_world.o CXX_FLAGS LIBS
其中CXX_FLAGS和LIBS是从wx-config -cxxflags
和wx-config --libs
生成的。这工作正常,但当我尝试运行可执行文件时,我收到此错误:
C:/Users/sam/Documents/cpp/wxwidgets_tutorial/a.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory
我构建的库应该是静态的,所以我不知道如何处理这个消息。非常感谢任何帮助!
wx-config --cxxflags给出输出:
-I/usr/local/lib/wx/include/i686-w64-mingw32-msw-unicode-static-3.0 -I/usr/local/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -D__WXMSW__ -mthreads
wx-config --libs给出输出:
-L/usr/local/lib -Wl,--subsystem,windows -mwindows /usr/local/lib/libwx_mswu_xrc-3.0-i686-w64-mingw32.a /usr/local/lib/libwx_mswu_webview-3.0-i686-w64-mingw32.a /usr/local/lib/libwx_mswu_qa-3.0-i686-w64-mingw32.a /usr/local/lib/libwx_baseu_net-3.0-i686-w64-mingw32.a /usr/local/lib/libwx_mswu_html-3.0-i686-w64-mingw32.a /usr/local/lib/libwx_mswu_adv-3.0-i686-w64-mingw32.a /usr/local/lib/libwx_mswu_core-3.0-i686-w64-mingw32.a /usr/local/lib/libwx_baseu_xml-3.0-i686-w64-mingw32.a /usr/local/lib/libwx_baseu-3.0-i686-w64-mingw32.a -lpng -ljpeg -ltiff -lexpat -lwxregexu-3.0-i686-w64-mingw32 -lz -lrpcrt4 -loleaut32 -lole32 -luuid -lwinspool -lwinmm -lshell32 -lcomctl32 -lcomdlg32 -ladvapi32 -lwsock32 -lgdi32
ls / usr / local / lib:
libwx_baseu_net-3.0-i686-w64-mingw32.a
libwx_baseu_xml-3.0-i686-w64-mingw32.a
libwx_baseu-3.0-i686-w64-mingw32.a
libwx_mswu_adv-3.0-i686-w64-mingw32.a
libwx_mswu_aui-3.0-i686-w64-mingw32.a
libwx_mswu_core-3.0-i686-w64-mingw32.a
libwx_mswu_gl-3.0-i686-w64-mingw32.a
libwx_mswu_html-3.0-i686-w64-mingw32.a
libwx_mswu_media-3.0-i686-w64-mingw32.a
libwx_mswu_propgrid-3.0-i686-w64-mingw32.a
libwx_mswu_qa-3.0-i686-w64-mingw32.a
libwx_mswu_ribbon-3.0-i686-w64-mingw32.a
libwx_mswu_richtext-3.0-i686-w64-mingw32.a
libwx_mswu_stc-3.0-i686-w64-mingw32.a
libwx_mswu_webview-3.0-i686-w64-mingw32.a
libwx_mswu_xrc-3.0-i686-w64-mingw32.a
libwxregexu-3.0-i686-w64-mingw32.a
libwxscintilla-3.0-i686-w64-mingw32.a
wx
编辑:
根据VZ的建议,我将/usr/i686-w64-mingw32/sys-root/mingw/bin
添加到我的路径中...它编译!
但是在运行时,程序不会打开任何窗口,只是立即退出。这仍然是图书馆问题吗?
答案 0 :(得分:0)
您需要将libstdc++-6.dll
所需的DLL(至少libgcc_s_sjlj-1.dll
和/usr/i686-w64-mingw32/sys-root/mingw/bin
)复制到PATH
或应用程序目录中的目录(或添加此目录)当然是你的PATH
。
您可以使用cygcheck
或(本机)dependency walker工具查找实际丢失的DLL。