2014-01-26 27 views
0

我一直妄图得到这个测试程序下进行编译编译获得一个牡丹库测试程序的Windows 7(MinGW的,代码::块)

#include <botan/botan.h> 


    int main() 
    { 
     Botan::LibraryInitializer init; 
    } 

我已经从网站上下载库源。我运行了configure.py,运行良好。 然后我试图运行MinGW的,让

这是错误我

c:\Botan-1.11.7>mingw32-make 
g++ -m64 -pthread -fPIC -fvisibility=hidden -std=c++11 -D_REENTRANT -fstack-pro 
tector -O3 -momit-leaf-frame-pointer -Wall -Wextra -Wstrict-aliasing -Wstrict-ov 
erflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wold-s 
tyle-cast -Wzero-as-null-pointer-constant -Ibuild\include -c C:\Botan-1.11.7\src 
\lib\algo_base\scan_name.cpp -o build\obj\lib\src_lib_algo_base_scan_name.obj 
C:\Botan-1.11.7\src\lib\algo_base\scan_name.cpp:1:0: warning: -fPIC ignored for 
target (all code is position independent) [enabled by default] 
C:\Botan-1.11.7\src\lib\algo_base\scan_name.cpp:1:0: sorry, unimplemented: 64-bi 
t mode not compiled in 
mingw32-make: *** [build\obj\lib\src_lib_algo_base_scan_name.obj] Error 1 

我搜索谷歌和任何可用的论坛上,我能找到。我在他们的网站上的隐藏文件夹中找到了预建的窗口库。但是该软件包包含lib和dll文件,而不是MinGW需要的.a文件。我尝试使用创建.a文件的程序LIB2A。我已经将这个文件添加到我的code :: blocks链接器选项中。我还包括了包含文件夹。

当我尝试编译我得到这个错误。

C:\botan\include\botan\init.h|41|undefined reference to `_imp___ZN5Botan18LibraryInitializer10initializeERKSs'| 

看起来它不能看到带有函数定义的函数库,但我失去了从这里去的地方。

回答

0

mingw32-make设置了-m64标志,这意味着它正在尝试构建一个64位库。要建立一个64位的库,你需要获得MinGW-w64。

当您运行configure.py时,它可能会将您的MakeFile设置为构建一个64位库。您需要检查其输出中设置了哪些选项。这包括构建32位或64位的选项。无论哪种方式,你需要一些这样的变种:python configure.py --os = mingw --cc = gcc

这个问题有一个类似的错误,并建议使用MinGW-w64,它可以让你建立一个64位的库:Building 64 bit dll with MinGW 32 bit in Eclipse

为了使用mingw32-make命令行进行构建,您还需要将MinGW-w64 bin目录添加到Windows路径中,并且可能会删除打包的Code :: Blocks MinGW从你的道路上避免冲突。你仍然可以使用mingw32-make来使用MinGW-w64构建库;即使它被命名为mingw32-make,它将构建64位。

如果您决定构建库64位,您还需要构建应用程序64位,因此您需要为Code :: Blocks设置MinGW-w64。要在Code :: Blocks中设置MinGW-w64,请参阅此问题:Setting up MingW and Code::Blocks in Windows 8 64 bit

相关问题