【发布时间】:2014-05-12 00:45:27
【问题描述】:
我想使用套接字将 int 从客户端发送到带有 ASN.1 的服务器。这是 ASN 定义
Message01 ::= SEQUENCE
{
number INTEGER -- inital integer
}
这是C代码
INTEGER_t clientNumber;
printf("Enter a number :\n ");
scanf("int *",&clientNumber);
Message01_t *message1;
message1 = calloc(1, sizeof(Message01_t));
message1->number = clientNumber;
der_encode(&asn_DEF_Message01, message1, 1, 0);
der_encode 出现错误
警告:传递“der_encode”的参数 3 使指针来自整数 没有强制转换 client.c:117:错误:分配中的类型不兼容
在example ASN.1的例子中他们写了
der_encode(&asn_DEF_Rect, rect,write_stream, ostream);
但我不明白 write_stream 是什么。
编辑:
我试过了
static int
write_out(const void *buffer, size_t size, void *app_key) {
FILE *out_fp = app_key;
size_t wrote;
wrote = send( to_server_socket, &buffer, sizeof( buffer ), 0 );
return (wrote == size) ? 0 : -1;
}
int main ( int argc, char* argv[] )
和
der_encode(&asn_DEF_Message01, message1, write_out, 0);
但我有一个错误
ndefined symbols for architecture x86_64:
"_asn_DEF_Message01", referenced from:
_main in cccwTrYO.o
"_der_encode", referenced from:
_main in cccwTrYO.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
【问题讨论】: