Win32下libsmi編譯

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!

發佈了12 篇原創文章 · 獲贊 6 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章