jeromewen

努力中
随笔 - 9, 文章 - 0, 评论 - 22, 引用 - 0
数据加载中……

LIBNIDS编译错误解决方案

1.       error LNK2019: 无法解析的外部符号 _inet_ntoa@4 ,该符号在函数 _adres 中被引用

需要加入 ws2_32.lib

2.       error LNK2019: 无法解析的外部符号 "int __cdecl nids_init(void)" (?nids_init@@YAHXZ) ,该符号在函数 _main 中被引用

改写 nids.h

在函数前加入

#ifdef __cplusplus

extern "C"

{

#endif

在函数后加入

#ifdef __cplusplus

}

#endif

3.         libnids.lib(libnids.obj) : error LNK2019: 无法解析的外部符号 _pcap_datalink ,该符号在函数 _nids_init 中被引用。。。。。。。。。。。。

需要加入 wpcap.lib

4.         LIBCMT.lib(close.obj) : error LNK2005: __close 已经在 LIBCD.lib(close.obj) 中定义。。。。。。。。。

解决方案属性 - 〉链接器 - 〉输入 - 〉忽略指定库 LIBCMT.lib 而不是 LIBCD.lib

Libcd.lib DEBUG 版本 libc.lib Release 版本得

 

5.        error LNK2019: 无法解析的外部符号 _nids_run ,该符号在函数 _main 中被引用

需要加入 libnids.lib

6.         error LNK2001: 无法解析的外部符号 "char * nids_errbuf" (?nids_errbuf@@3PADA)

仅出现此错误的时候参考一下内容

C ++ 的全局常量只有静态连接性能。这不同于 C ,如果试图在 C ++的多个文件内使用全局变量也会产生 LNK2001 错误。

l         一种解决的方法是需要时在头文件中加入该常量的初始化代码,并在 .CPP 文件中包含该头文件;

l         另一种方法是使用时给该变量赋以常数。

改写 nids.h

extern char nids_errbuf[]="";

7.         error LNK2001: 无法解析的外部符号 "struct nids_prm nids_params" (?nids_params@@3Unids_prm@@A)

需要在源码文件中加入 struct nids_prm nids_params;

   

总结如下 :

在代码中加入

#pragma comment(lib," ws2_32 ")

#pragma comment(lib," libnids ")

#pragma comment(lib," wpcap ")

 

属性->连接器->命令行

加入

ws2_32.lib libnids.lib wpcap.lib /verbose:lib /NODEFAULTLIB:libcpd.lib /NODEFAULTLIB:LIBCMT.lib

posted on 2006-09-29 12:30 JeromeWen 阅读(2171) 评论(2)  编辑 收藏 引用

评论

# re: LIBNIDS编译错误解决方案   回复  更多评论   

针对第二种错误,请教应该怎么改写nids.h ,改了nids.h是否还需要重新编译libnids吗?请高手赐教,我的EMAIL:socket@zj165.com
2007-02-01 19:42 | kaixin

# re: LIBNIDS编译错误解决方案 [未登录]  回复  更多评论   

@kaixin 无需重新编译,修改后保存就是了.
2007-02-03 11:31 | jeromewen

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理