當前位置:首頁 » 編程軟體 » 預編譯頭文件來自編譯器的早期版本或

預編譯頭文件來自編譯器的早期版本或

發布時間: 2023-03-15 01:17:23

A. 如何使用delphi 編譯rtklib

1. 首先在vs2013中新建一個win32的dll項目

2. 在項目上添加一個文件夾[rtklibsrc]然後在文件夾上【添加現有項目】把rtklib的源文件加入工程。在rtklibsrc下建立rcv把rcv下面的文件也添加到工程

3. 現在開始編譯工程,你會發現很多錯誤。下面我們一步步來解決錯誤。

1> Q: error C1853:
「Debug\rtklibHelper.pch」預編譯頭文件來自編譯器的早期版本,或者預編譯頭為 C++ 而在 C 中使用它(或相反)
x:\xxxx\rtklibhelper\rtklibsrc\tle.c 1 1 rtklibHelper
A: 不使用預編譯頭

2> Q: 錯誤 1 error C4996: 'strncpy': This function or
variable may be unsafe. Consider using strncpy_s instead. To disable
deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for
details. x:\xxxx\rtklibhelper\rtklibhelper\rtklibsrc\tle.c

A: 其實提示上面已經告訴你方法了,需要你加入預編譯指令來取消這個錯誤[_CRT_SECURE_NO_WARNINGS]

3> Q: error C4996: 'gethostbyname': Use getaddrinfo() or
GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to
disable deprecated API warnings
x:\xxxx\rtklibhelper\rtklibsrc\stream.c

A: 這個錯誤和上面類似,加入[_WINSOCK_DEPRECATED_NO_WARNINGS ]

4> Q:接下來是一個這樣的錯誤 error C2466: 不能分配常量大小為 0 的數組 x:\xxxx\rtklibhelper\rtklibsrc\rinex.c

A:這個錯誤我們來看一下, 在[MAXPRNGLO]上面按F12,看他的定義處

這個常量為0,那麼不能進行編譯,我們想上面一樣在預編譯器裡面加入 ENAGLO

5> Q: error C1083: 無法打開包括文件: 「rtklib.h」: No such file or
directory x:\xxxx\rtklibhelper\rtklibsrc\rcv\ublox.c 41 1
rtklibHelper

A: 添加附加目錄設置[.\rtklibsrc] , 注意是C/C++的常規下面,不是鏈接器的常規頁面。

6> Q: error LNK2005: _input_oem3 已經在 novatel.obj 中定義 x:\xxxx\rtklibhelper\novatel_old.obj rtklibHelper

A: 這個錯誤是添加文件的時候添加重復了novatel_old.c不應該添加了,刪除即可

7>: Q: error LNK2019: 無法解析的外部符號 _settspan,該符號在函數 _postpos 中被引用 x:\xxxx\rtklibhelper\postpos.obj rtklibHelper

error LNK2019: 無法解析的外部符號 __imp__timeGetTime@0,該符號在函數
_tickget 中被引用 x:\xxxx\rtklibhelper\rtkcmn.obj rtklibHelper

error LNK2019: 無法解析的外部符號 __imp__accept@12,該符號在函數
_accept_nb 中被引用 x:\xxxx\rtklibhelper\stream.obj rtklibHelper

A: 添加附加庫[連接器->輸入->附加依賴庫]添加winmm.lib, ws2_32.lib

8>:Q: error LNK2019: 無法解析的外部符號 _showmsg,該符號在函數 _convrnx 中被引用 x:\xxxx\rtklibhelper\convrnx.obj rtklibHelper

A: 一查showmsg這個函數如果在DLL中需要自己定義,rtklib裡面已經做好了處理需要在預處理器裡面加入[DLL]即可。

預處理器裡面我們添加了

_CRT_SECURE_NO_WARNINGS
_WINSOCK_DEPRECATED_NO_WARNINGS
ENAGLO
DLL

最後rtklibHelper編譯成功了,可以開始編寫具體的功能函數了。

B. 為什麼用visual studio2010執行C語言後老是出現項目已過期的情況應如何解決

你是按Ctrl+F5或F5執行的吧?這個命令是運行那個編譯出的EXE程序。你的源代碼修改了,要重新編譯一下EXE再來執行,否則就會有過期的提示,點「是」重新生成即可(只是一個善意的提示,告訴你要重新編譯),或者下次不再提示也可以。

註:編譯是F7,我習慣先F7編譯完Ctrl+F5執行,就不會有提示的。

圖片:先編譯修改過的代碼再來執行EXE。

很高興為你解答^_^

C. 「預編譯頭文件來自編譯器的早期版本,或者預編譯頭為 C++ 而在 C 中使用它(或相反)」

把min.c重命名為min.h
c是源文件
h是頭文件

D. 錯誤 1 error C1853: 「Debug\test.c.pch」預編譯頭文件來自編譯器的早期版本,或者預編譯頭為 C++ 而在 C

告警信息里有說明,可能是你包含的頭文件是不當前所使用編譯器里的頭文件。
檢查一下頭文件是不是當前所使用的編譯器里的文件。

E. 預編譯頭文件來自編譯器的早期版本,或者預編譯頭為 C++ 而在 C 中使用它(或相反) 怎麼調試

你是在vs中使用c文件。首先要調用c函數的地方,加上extern "c"{ #include "xx.h"},把c所用的頭文件放這裡面;
然後在vs工程裡面設置不使用預編譯頭
project->configuration property->c/c++->precompiled headers->選not using precompiled heads

F. 錯誤 1 fatal error C1853: "Debug\sift.pch"預編譯頭文件來自編譯器的早期版本

該錯誤是因為當項目中混合了 .cpp 和 .c 文件時,編譯器會對它們採取不同的編譯方式(主要是因為對函數聲明的處理方式不同),因而不能共用一個預編譯頭文件。在 VC++ 中,默認的預編譯頭文件是針對 C++ 的 (stdafx.h 和 stdafx.cpp),當然也可以創建針對 C 的預編譯頭。

方法:將少數的不同類文件設為不使用預編譯頭是比較平衡的做法,方法是:對於 VC++6.0,在 FileView 里對要取消預編譯頭的 .c (或 .cpp) 文件點右鍵,選擇 settings,在彈出的對話框右邊選擇 category 為 precompiled headers,再設置選項為 not using ...;(對於 VS2005,則在 solution explorer 中對相應文件點右鍵選擇 properties,在 precompiled headers 項下設置 not using... 即可。如果需要設置多個文件,則可以按住 Ctrl 鍵再同時選中這些文件並設置)PS:解釋如下點擊項目 點擊屬性 然後選擇C/C++ 預編譯頭 創建使用頭文件 不使用預編譯頭文件(解決方案資源管理器-右擊需要排除的c或cpp文件]-彈出屬性菜單-展開C/C++-預編譯頭-創建/使用預編譯頭-選擇不適用預編譯頭)

G. 預編譯頭文件來自編譯器的早期版本,或者預編譯頭為 C++ 而在 C 中使用它(或相反)

C++使用中基本上c裡面的頭文件都可以兼容,但反過來則不行。如果是說這個C++的頭文件你一定要使用在C中它,那就只能你自行編譯一個了。

還有你說的不是很清楚「」冒號中的句子是你想要問的問題還是你想做個MFC課程設計?你又說你用的是VS2005,加上mfc,那就只能是學VC了,基本上來說你如果只是想做一個課程設計而不是成為一個程序設計高手的話,c++和c都對你的VC課程設計影響不大。

熱點內容
愛情腳本短 發布:2025-07-20 09:56:44 瀏覽:677
存款機的安全密碼是什麼 發布:2025-07-20 09:53:03 瀏覽:32
手機如何清理空文件夾 發布:2025-07-20 09:40:35 瀏覽:72
什麼軟體可以編譯文件 發布:2025-07-20 09:35:17 瀏覽:961
可編程式控制制器的定義 發布:2025-07-20 09:28:10 瀏覽:390
陌陌會員訪問不留痕跡 發布:2025-07-20 09:28:08 瀏覽:308
x27熱點密碼是多少 發布:2025-07-20 09:03:19 瀏覽:577
c語言編碼生日快樂 發布:2025-07-20 08:56:56 瀏覽:390
伺服器北京雲空間 發布:2025-07-20 08:55:29 瀏覽:261
秦皇島少兒編程 發布:2025-07-20 08:55:19 瀏覽:63