【问题标题】:ASN1C DER decoderASN1C DER解码器
【发布时间】:2012-03-12 17:47:25
【问题描述】:

我正在尝试创建简单的 DER 解码器 - 控制台应用程序,它只输出给定数据结构的内容(以 DER 格式编码,如 this one)。

我在运行此示例时遇到问题:A ''Rectangle'' Decoder

我正在尝试用 MSVC 编译它,但 #include <inttypes.h>#include <netinet/in.h> 有问题。还有类型 ssize_t 是未定义的。

这是我现在所做的:
1.在Online ASN.1 Compiler我把这段代码粘贴到文本框里:

RectangleModule1 DEFINITIONS ::=
BEGIN

Rectangle ::= SEQUENCE {
    height  INTEGER,
    width   INTEGER
}

END

2。我选择了“使用本机机器类型”“生成 PER 支持” 选项。
3. “编译正常” 所以我下载了那个输出 .tgz
4.在Visual Studio 2010中创建空项目,拖放源文件从这个.tgz
中提取 5. 将附加的include目录设置为ASN1C的“skeletons”目录
6. 尝试构建它。

我错过了什么?

任何帮助将不胜感激

【问题讨论】:

  • 我过去成功使用过ASN1C。在寻找替代方案之前,也许最好先集中精力让它发挥作用?
  • 尝试查看 yaz 项目 www.indexdata.com 的 yaz-asncomp 和 ODR 模块
  • @trojanfoe:我猜你在 Linux 上使用 GCC 成功使用了 ASN1C...
  • @LihO 是的,没错。我认为它在 MSVC 下也能正常工作。
  • @trojanfoe:经过几次更正后,我也得到了它在 MSVC 下的工作;)还是谢谢

标签: c++ visual-c++ asn.1 der


【解决方案1】:

问题是必须修改 ASN1C 生成的代码才能使用 MSVC 编译它并在 Windows 环境中使用它。

  1. #include <inttypes.h> 应替换为 #define ssize_t SSIZE_T
  2. #include <netinet/in.h> 应替换为 #include <Winsock2.h>
  3. 关键字inline 应从static 中定义的asn_internal.h 函数中删除

之后,一切正常;)

【讨论】:

  • 在 VS2005 中,它在没有任何修改的情况下为我唤醒了。
【解决方案2】:

确保您拥有正确的 ASN 定义文件。然后去链接 http://lionet.info/asn1c/asn1c.cgi

在给定窗口中粘贴您的 ASN 定义。按下按钮“继续 ASN.1 编译”。如果您收到任何编译错误,请纠正这些错误。编译成功后,它将为您的解码器生成代码。试一试,效果不错。

【讨论】:

    猜你喜欢
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 2012-10-24
    • 2011-11-11
    • 1970-01-01
    • 2017-07-12
    • 2011-08-24
    相关资源
    最近更新 更多