GNSS - PPP軟件 - GAMP 在VS2019/2022下完成調試、跑通程序(超詳細!)

目錄

一、前期準備

二、調試詳細步驟

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.hunistd.h復制VS默認包含目錄

將GAMP -> mannual_GAMP -> GAMP_src -> Windows下頭文件dirent.hunistd.h復制到vs默認包含目錄,我的目錄是:D:\Windows Kits\10\Include\10.0.22621.0\ucrt

方法:

在"gamp.h"中? ctrl+鼠標左鍵? 選中“stdio.h”(或者其他VS自帶的頭文件),跳轉至"stdio.h"文件,

鼠標右鍵單擊?文件名,跳出選項卡,選擇"打開所在的文件夾",即可跳轉到頭文件所在的文件,將dirent.hunistd.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博客

????????

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215738.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215738.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215738.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《C++ Primer》第12章 動態內存(二)

參考資料: 《C Primer》第5版《C Primer 習題集》第5版 12.1.5 unique_ptr(P417) unique “擁有”它所指向的對象,某個時刻只能有一個 unique_ptr 指向一個給定對象。 當我們定義一個 unique_ptr 時,需要將其綁定到…

游戲中小地圖的制作__unity基礎開發教程

小地圖的制作 Icon標識制作制作攝像機映射創建地圖UI效果“不一樣的效果” 在游戲中經常可以看到地圖視角的存在,那么地圖視角是如何讓實現的呢? 這一期教大家制作一個簡易的小地圖。 💖點關注,不迷路。 老樣子,我們還…

Leetcode 131 分割回文串

題意理解: 分割回文子串,可以看作是劃分連續的字幕組合——所以也可以用回溯的方法來解決 每個位置選與不選——該位置切割|不切割 對于每一段子串——>判斷是否是回文串: 是: 繼續切割 不是: 剪枝 解題方法…

Ubuntu Destktop 22.04 設置 ssh 超時時間

Ubuntu Destktop 22.04 使用 ssh 連接服務器時,發現一段時間不操作就會自動斷開連接,解決方法如下: 打開 /etc/ssh/ssh_config 文件: sudo vim /etc/ssh/ssh_config在文件最后添加: # ssh 客戶端會每隔 30 秒發送一…

在線免費制作各種證件照,有需要的收藏

現在很多場合都需要一寸證件照,比如辦理身份證、出國簽證等。以往,我們都需要到專門的照相館拍攝,但是現在,有了隨時照微信小程序(抖音和支付搜索億鳴證件照哦),你可以足不出戶就能夠制作一寸證…

linux shell

文章目錄 預設參數腳本自動開終端if語句語法常用判斷命令文件/目錄判斷:字符串判斷數值判斷邏輯判斷 if高級特性: 預設參數 $$ Shell本身的PID(ProcessID)$! Shell最后運行的后臺Process的PID$? 最后運行的命令的結束代碼&#…

MySQL InnoDB Replication部署方案與實踐

1. 概述 MySQL Innodb ReplicaSet 是 MySQL 團隊在 2020 年推出的一款產品,用來幫助用戶快速部署和管理主從復制,在數據庫層仍然使用的是主從復制技術。 ReplicaSet 主要包含三個組件:MySQL Router、MySQL Server 以及 MySQL Shell 高級客戶…

eventBus父組件$emit一次子組件多次收到¥

eventBus父組件$emit一次子組件多次收到$on 參考(EventBus踩坑1-CSDN博客) 父組件emit出了事件,這個過程需要一定時間,這段時間過長,子組件還未接收到父組件的emit,父組件認為子組件沒有收到,…

12 位多通道國產芯片ACM32F403/F433 系列,支持 MPU 存儲保護功能,應用于工業控制,智能家居等產品中

ACM32F403/F433 芯片的內核基于 ARMv8-M 架構,支持 Cortex-M33 和 Cortex-M4F 指令集。芯片內核 支持一整套DSP指令用于數字信號處理,支持單精度FPU處理浮點數據,同時還支持Memory Protection Unit (MPU)用于提升應用的…

Java - Mybatis借助PageHelper實現分頁,集成SpringBoot

未使用SpringBoot 第?步&#xff1a;引?依賴 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.1</version> </dependency> 第?步&#xff1a;在mybatis-config.xml…

PyTorch張量:內存布局

你可能對 torch 上的某些函數感到困惑&#xff0c;它們執行相同的操作但名稱不同。 例如&#xff1a; reshape()、view()、permute()、transpose() 等。 這些函數的做法真的不同嗎&#xff1f; 不&#xff01; 但為了理解它&#xff0c;我們首先需要了解一下張量在 pytorch 中…

1 CPU實現的基本框圖

匯編語言 && 指令格式 CPU設計的框架&#xff1a;三級流水線 ROM存放指令和數據&#xff0c;大端模式&小端模式&#xff0c;地址對齊 取指 譯碼&#xff1a; 執行&#xff1a; 匯編語言 & 指令格式 流水線實現工作機制 模塊功能劃分&接口信號 參考…

Linux中用rpm管理軟件

本章主要介紹使用rpm對軟件包進行管理 使用rpm查詢軟件的信息使用rpm安裝及卸載軟件使用rpm對軟件進行更新使用rpm對軟件進行驗證 rpm 全稱是redhat package manager&#xff0c;后來改成rpm package manager&#xff0c;這是根據源 碼包編譯出來的包。先從光盤中拷貝一個包&…

strict-origin-when-cross-origin

嚴格限制同源策略 &#xff08;1&#xff09;允許服務器的同源IP地址訪問 &#xff08;2&#xff09;允許Referer --- 后端服務器要配置

linux sed命令刪除一行/多行_sed刪除第一行/linux刪除文件某一行

sed系列文章 linux常用命令(9)&#xff1a;sed命令(編輯/替換/刪除文本)linux sed命令刪除一行/多行_sed刪除第一行/linux刪除文件某一行 文章目錄 sed系列文章一、sed刪除某一行內容/刪除最后一行二、sed刪除多行三、擴展3.1、-i命令 本文主要講解如何刪除txt文件中的某一行內…

vite+ts——user.ts——ts接口定義+axios請求的寫法

import axios from axios; import qs from query-string; import {UserState} from /store/modules/user/types;export interface LoginData{username:string;password:string;grant_type?:string;scope?:string;client_id?:string;client_secret?:string;response_type?:…

企業使用APP自動化測試工具的重要因素

隨著移動應用市場的蓬勃發展&#xff0c;企業對高質量、高效率的軟件交付提出了更高的要求。在這個背景下&#xff0c;APP自動化測試工具成為了企業不可或缺的一部分。以下是企業采用APP自動化測試工具的關鍵因素&#xff1a; 1. 快速且可重復的測試執行 自動化測試工具能夠快速…

Docker入門概念

文章目錄 容器&#xff08;container&#xff1a;容器/集裝箱&#xff09;技術虛擬機解決了哪些部署問題docker解決了哪些部署問題docker是如何做到容器間運行時環境隔離的docker基本概念docker基本使用 容器&#xff08;container&#xff1a;容器/集裝箱&#xff09;技術 容…

奧威亞視頻云平臺VideoCover.aspx 接口任意文件上傳漏洞復現 [附POC]

文章目錄 奧威亞視頻云平臺VideoCover.aspx 接口任意文件上傳漏洞復現 [附POC]0x01 前言0x02 漏洞描述0x03 影響版本0x04 漏洞環境0x05 漏洞復現1.訪問漏洞環境2.構造POC3.復現0x06 修復建議奧威亞視頻云平臺VideoCover.aspx 接口任意文件上傳漏洞復現 [附POC] 0x01 前言 免責…

做數據分析為何要學統計學(5)——什么問題適合使用卡方檢驗?

卡方檢驗作為一種非常著名的非參數檢驗方法&#xff08;不受總體分布因素的限制&#xff09;&#xff0c;在工程試驗、臨床試驗、社會調查等領域被廣泛應用。但是也正是因為使用的便捷性&#xff0c;造成時常被誤用。本文參閱相關的文獻&#xff0c;對卡方檢驗的適用性進行粗淺…