2012-02-22 142 views
2

我试图创建简单的DER解码器 - 应用程序,它只是给出输出数据结构的内容(DER格式编码的,像this one)。ASN1C 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. “编译OK”所以我下载的是输出从这个.tgz的
提取.tgz的
4.创建空项目INT Visual Studio 2010中,拖动正下跌的源文件5.将附加包含目录设置为ASN1C的“skeletons”目录
6.试图构建它。

我错过了什么?

任何帮助,将不胜感激

+0

我过去成功地使用了ASN1C。在寻找替代品之前,最好集中精力做好工作。 – trojanfoe 2012-02-22 11:48:05

+0

试试看yaz项目的yaz-asncomp和ODR模块www.indexdata.com – 2012-02-22 11:58:27

+0

@trojanfoe:你在** Linux **上成功地使用ASN1C使用** GCC **我猜... – LihO 2012-02-22 12:47:28

回答

2

问题是,必须修改ASN1C生成的代码,以便使用MSVC进行编译并在Windows环境中使用它。

  1. #include <inttypes.h>应与#define ssize_t SSIZE_T
  2. #include <netinet/in.h>替换应与#include <Winsock2.h>
  3. 关键字inline应从asn_internal.h

在此之后,一切正常定义static功能被去除取代;)

+0

在VS2005它没有任何修改就为我启发。 – 2012-03-26 14:35:57

0

请确保您有一个正确的ASN确定指标的文件。然后去链接 http://lionet.info/asn1c/asn1c.cgi

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