我是libtasn1的新用户(正在尝试对该库进行基准测试,再次尝试Google的protobuf)。...实际上是在尝试成为新用户。

我无法使该库在Windows(使用Visual Studio 2010)下编译。

从此处下载最新版本(4.2):http://ftp.gnu.org/gnu/libtasn1/
然后,我从Visual Studio 2010命令提示符运行configure(必须先安装Cygwin才能具有sh.exe,ar.exe ....)。这显然起作用并输出:

  version:          4.2 shared 9:2:3
  Host type:        i686-pc-cygwin
  Install prefix:   /usr/local
  Compiler:         gcc -std=gnu99
  Warning flags:    errors:  warnings:
  Library types:    Shared=yes, Static=yes
  Valgrind:
  Version script:   yes


现在,我无法继续构建。这是我尝试过的:

打开zip中提供的libtasn1.sln。找不到报告config.h的第一个错误(+其他头文件)。更新包含路径后,在编译ASN1.c时,在一些头文件语句中,inline static上的C2054出现了更严重的错误(C且C中的inline static无效)。

我放弃了这里,尝试通过键入“ nmake”从Visual命令提示符直接编译。很短,马上有一个错误:

Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation. Tous droits réservés.

makefile(269) : fatal error U1001: erreur de syntaxe : caractère non conforme '{' dans la macro
Stop.


最后,我尝试使用MinGW进行编译(使用mingw32-make.exe)。同样的事情,立即出错:

process_begin: CreateProcess(NULL, /usr/bin/sed -n s/^\(sc_[a-zA-Z0-9_-]*\):.*/\
1/p ./maint.mk ./cfg.mk, ...) failed.
'test' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.
make  all-recursive
process_begin: CreateProcess(NULL, make all-recursive, ...) failed.
make (e=2): Le fichier spécifié est introuvable.
Makefile:928: recipe for target 'all' failed
mingw32-make.exe: *** [all] Error 2


libtasn1网站说:


  该代码应可在所有Unix(如操作系统)和Windows上使用。


好的,但是如何构建呢?我在网站上或安装文件中都找不到任何信息。

最佳答案

您是否尝试过Windows子目录中的.sln文件?


  这显然有效


这里的关键词是“显然”。当您运行configure时,它将检查构建环境并创建一个适合该环境的Makefile。由于您是使用Cygwin的sh.exe运行配置的,因此它为Cygwin环境创建了一个makefile(请参阅“主机类型:”和“编译器:”值)。因此,即使configure创建了丢失的config.h,其内容也适用于具有GCC的Cygwin,而不适用于具有MSVC的Windows。

configure创建GNU make和许多其他Unix-y make程序可以理解的makefile。微软的nmake(当我上次查看它时)了解一种更加有限且不兼容的语言。您不能将configure创建的makefile与nmake一起使用。

对于MinGW,您是否尝试过使用Windows / libtasn14win.mk?

注意:在libtasn1的GNU FTP站点上,最新的Windows二进制文件适用于版本3.3 :(

您可能希望在help-libtasn1邮件列表上获得有关如何创建Windows二进制文件的提示。显然,与libtasn1的其余部分相比,Windows构建受到的关注较少。

关于c++ - 如何使用Visual Studio编译libtasn1?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27899382/

10-10 13:42