libsmi開發包可以用作SNMP開發,最近需要在windows平臺編譯出libsmi的lib。資料提示通過NMAKE來編譯,但總是會報錯,加上對makefile不是很瞭解,所以一直沒有成功。無奈之下試試直接在IDE中編譯,沒有想到竟然成功了,很是高興,具體步驟如下:
1. 從http://www.ibr.cs.tu-bs.de/projects/libsmi/download.html?lang=de上download libsmi-0.4.5的源碼包。解壓後會看到lib,win等子目錄和文件。lib裏面放的是源文件及頭文件,win下面放的是用來在windows下編譯的源文件和頭文件。
2. 在VC6.0中新建“Win32 Static Library”工程,然後添加所需要的源文件。分爲三個步驟:
(1)添加lib和win目錄下的源文件
(2)創建unistd.h頭文件,文件內容如下:
#ifndef _UNISTD_H#define _UNISTD_H
#include <io.h>#include <process.h>
#endif /* _UNISTD_H */
並將unistd.h放到lib目錄下(unistd.h是linux中的頭文件,在windows下不存在,所以要自己創建)
(3)添加lib和win目錄下的頭文件
3. 設置VC6.0的編譯環境,具體步驟如下:
(1) project->settings->c/c++, category選擇Code Generation,use-runtime library選擇Multithreaded DLL
(2) tools->options->directories, 在include files中添加lib和win兩個目錄的路徑
4. Build
5. 雖然會出現warnning,但不影響編譯結果。在VC工程中做一些設置就可以是用libsmi提供的方法來做開發了。具體設置如下:
(1) project->settings->link,在object/library modules下面添加上面編譯出來的.lib文件
(2) 在tools->options->directories->include files中添加添加smi.h所在的目錄,或者直接把smi.h添加到系統的頭文件目錄中
(3) 在tools->options->directories->Library files中添加編譯出來的.lib文件所在的目錄,或者直接把該.lib文件添加到系統的lib文件目錄中
(4) project->settings->c/c++, category選擇Code Generation,use-runtime library選擇Multithreaded DLL(不然在link的過程中會出現很多“MSVCRT.lib(MSVCRT.dll) : error LNK2005”的錯誤,這是因爲DLL和LIB被同時引用造成的)
(5) 然後在我們的程序中#include<smi.h>,就可以開始做SNMP的開發了,GO!