准備工作
- 在VS2015下新建一個win32的dll項目(空項目)
- 把在github上下載的rtklib2.4.2里的src文件夾復制到剛剛建立的win32下
- 把src里的文件添加到項目里,其中頭文件添加rtklib.h(在src里)
開始編譯
現在可以進行編譯了,因為rtklib是在Borland C++編譯器下寫的,但是我們現在用VS進行編譯,會出現一堆的錯誤,現在我們就一個個來解決。
- 這是由於函數安全性問題,編譯器已經給出建議,添加預編譯指令_CRT_SECURE_NO_WARININGS。我們打開調試下的項目屬性,然后在配置屬性 -> C/C++ -> 預處理器 -> 預處理器定義 -> 編輯。在下面添加上_CRT_SECURE_NO_WARININGS
- 這個也是添加預編譯指令來去除錯誤。位置和上面一樣。在預處理器定義里添加_WINSOCK_DEPRECATED_NO_WARNINGS
- 不能分配常量大小為0的數組。也是在預處理器定義里添加定義ENAGLO
- rcv里的文件找不到rtklib.h這個頭文件。我們繼續在項目屬性里,在配置屬性 -> C/C++ 常規 -> 附加包含目錄 -> 編輯 。在上面添加rtklib.h的絕對路徑(在項目里的src找到rtklib.h並查看它的絕對路徑)
- 提示未初始化本地指針變量的錯誤,雙擊錯誤找到這個錯誤的位置,然后往上找到定義變量sbs的位置,給指針初始化賦值NULL
- 編譯后發現了20個莫名的錯誤,我們找到之前預處理器定義處,在下面添加DLL,再找到項目屬性,在配置屬性 -> 鏈接器 -> 輸入 -> 附加依賴項里添加 winmm.lib 和 ws2_32.lib
- 最后再編譯就成功了。