目錄
一、前期準備
二、調試詳細步驟
1.VS中新建項目
2.復制源碼至項目文件夾
3.將源碼中“.c”文件和“.h”文件添加至項目指定位置
4.修改項目屬性:
(1)【 配置屬性 -> C/C++ ->預處理器 ->預處理器定義】添加如下
(2)【配置屬性->鏈接器->調試->生成調試信息】 調整為 生成調式信息(/DEBUG)
(3)【配置屬性-> C/C++ ->常規->調試信息格式】調整為 C7
5.添加多線程依賴庫
(1)【配置屬性-> C/C++ ->常規->附加目錄】
(2)【配置屬性->鏈接器->常規->附加庫目錄】
6.頭文件dirent.h和unistd.h復制VS默認包含目錄
7.將配置文件路徑添加至命令參數
三、可能出現的錯誤
1.C4996
2.C4703
3.Stack overflow
四、成功編譯運行、輸出結果
五、參考博客
一、前期準備
周鋒博士在2017年開源了一個項目:多系統 GNSS 非差非組合精密單點定位軟件GAMP
GAMP: An open-source software of multi-GNSS precise point positioning using undifferenced and uncombined observations
下載地址:GAMP: An open-source software of multi-GNSS precise point positioning using undifferenced and uncombined observations
點擊此處即可下載解壓包:
下載完成之后,解壓文件夾如下圖所示:
二、調試詳細步驟
1.VS中新建項目
打開VS2019/VS2022,新建一個Visual C++的空項目,保存路徑和名稱自行設定;
2.復制源碼至項目文件夾
將GAMP -> mannual_GAMP -> GAMP_src -> Windows -> gamp_c 下的gamp_src文件夾復制到所建項目路徑下,將測試數據也一并復制過來,即:GAMP -> mannual_GAMP -> Examples下的 2017244 文件夾
圖片下面的那行紅字書寫有誤,”原文件中的 gamp_src文件“
3.將源碼中“.c”文件和“.h”文件添加至項目指定位置
【鼠標右鍵--添加--現有項】-- 選擇 “復制到該項目中的gamp_src文件夾”中的 .c 和 .h 文件
添加完成后,如下圖:
4.修改項目屬性:
(1)【 配置屬性 -> C/C++ ->預處理器 ->預處理器定義】添加如下
WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);_CRT_SECURE_N
O_WARNINGS;ENAGLO;ENACMP;ENAGAL;ENAQZS;NFREQ=3
? ? ?
(2)【配置屬性->鏈接器->調試->生成調試信息】 調整為 生成調式信息(/DEBUG)
(3)【配置屬性-> C/C++ ->常規->調試信息格式】調整為 C7
5.添加多線程依賴庫
(1)【配置屬性-> C/C++ ->常規->附加目錄】
將GAMP\mannual_GAMP\GAMP_src\Windows\pthreads-w32-2-9-1-release目錄拷貝到C盤
然后在項目中附加目錄【配置屬性-> C/C++ ->常規->附加目錄】 添加
C:\pthreads-w32-2-9-1-release\Pre-built.2\include
(2)【配置屬性->鏈接器->常規->附加庫目錄】
添加
C:\pthreads-w32-2-9-1-release\Pre-built.2\lib\x86
(3)【屬性->鏈接器->輸入->附加依賴項】
添加? ? ?
pthreadVSE2.lib
6.頭文件dirent.h
和unistd.h
復制VS默認包含目錄
將GAMP -> mannual_GAMP -> GAMP_src -> Windows下頭文件dirent.h
和unistd.h
復制到vs默認包含目錄,我的目錄是:D:\Windows Kits\10\Include\10.0.22621.0\ucrt
方法:
在"gamp.h"中? ctrl+鼠標左鍵? 選中“stdio.h”(或者其他VS自帶的頭文件),跳轉至"stdio.h"文件,
鼠標右鍵單擊?文件名,跳出選項卡,選擇"打開所在的文件夾",即可跳轉到頭文件所在的文件,將dirent.h
和unistd.h
這兩個文件復制到該文件夾即可。
7.將配置文件路徑添加至命令參數
【右鍵項目 ->配置屬性 -> 調試 -> 命令參數】,將第2步的2017244文件夾下的配置文件 gamp.cfg 路徑信息添加進去,我的gamp.cfg文件路徑為:E:\GAMP_2023_12_11\Data\2017244\gamp.cfg
更改gamp.cfg文件中的路徑信息:
注意:要在數據處理文件夾中創建一個結果文件夾,比如上圖中配置文件的結果文件夾名是result,因此要創建一個result文件夾,如下圖所示
至此,可以開始編譯運行,可能會出現一些錯誤,可以參考下文。
三、可能出現的錯誤
1.C4996
錯誤C4996’sprintf’: This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.pppc:\users\cugch\desktop\gamp\test\ppp\ppp\gamp_src\gamppos.c374
解決方法:(最好下面兩個都試試)
(1)【項目屬性->配置屬性->C/C+±>預處理器->預處理定義】添加兩個宏
_CRT_SECURE_NO_DEPRECATE
_SCL_SECURE_NO_DEPRECATE
(2)屏蔽出4996錯誤,即在頭文件之前加上以下一行代碼#pragma warning(disable:4996)??
注:我使用了這個方法,然后就沒有該錯誤了
2.C4703
錯誤C4703使用了可能未初始化的本地指針變量“lam”ppp gamppos.c571
解決方法:
轉到 lam 定義發現確實沒有初始化,而是在后面直接賦值;修改代碼,初始化的時候指向NULL;
3.Stack overflow
0x00007FF7AA935407 處有未經處理的異常(在 GAMP_2023_12_11.exe 中): 0xC00000FD: Stack overflow (參數: 0x0000000000000001, 0x00000094B1403000)。
出現位置是該行:
這個問題出現后我沒有解決,但是后續我在解決其他問題的時候這個問題又消失了,我也不清楚怎么弄的,有這個問題的朋友可以先解決其他問題或者重啟電腦或者等短時間再編譯,說不定就好了。
四、成功編譯運行、輸出結果
修改完上述錯誤之后,點擊”本地Windows調試器“運行程序,注意選擇 x64?
在項目屬性頁,配置選擇"活動(Debug)",平臺選擇"Win32"
運行窗口如下,可見其正在處理第一個觀測值文件:
執行完畢之后,可見整個程序運行時間為94.169s,如下圖所示:
輸出文件夾 result 中存放著剛剛生成的數據信息:
至此,整個調試過程全部完成,后續可以自行下載數據進行處理。
五、參考博客:
VS中報錯C4996 scanf錯誤&錯誤介紹&解決方案_c4996怎么解決-CSDN博客
GAMP編譯點滴_函數使用堆疊的 "24580" 字節。請考慮將一些數據移動到-CSDN博客
GAMP|Visual Studio 2019環境下配置GAMP-CSDN博客
100-GAMP安裝調試細則_gamp調試全部出現pdop錯誤-CSDN博客
????????