2

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

我在运行此示例时遇到问题: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.将附加包含目录设置为ASN1C
6的“skeletons”目录. 尝试构建它。

我错过了什么?

任何帮助,将不胜感激

4

2 回答 2

2

问题是必须修改 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

之后,一切正常;)

于 2012-02-22T13:07:57.390 回答
0

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

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

于 2012-02-22T12:28:27.460 回答