C/C++實戰012:VC++6.0控制檯使用CString

     今天在寫FANUC 開發時遇到一個,那就是在讀寫入宏參數的時候獲取到的值並不是我們寫入的值,藉口給定的返回值是個long類型的9位數,也就是說當我們要獲取幾臺中的56.660時我們得到的值是mcr_val=566600000,然後再給了我們一個指定值的小數點位數的dec_val=7的數值,所以我們在獲取到對應的值時還需要進行適當的處理才能獲取到正確的值。

    而今天的問題則是在寫入宏參數時遇到的,那就是 當我們要寫入一個56.660時我們並不能直接將該值賦值給cnc_wrmacro函數,同樣需要對數據進行處理才行,那麼這裏就有個問題了,我們要先獲取到數據的小數位數,這時我希望將該數據進行字符串切割來實現,想通過定義CString來處理數據,在VS2012中只要直接引入頭文件#include <afx.h>就可以使用CString類,可是在VC++6.0中總是報錯,無法識別CString。

    然後我又添加頭文件#include <stdafx.h> ,VC++6.0默認嗎沒有#include <stdafx.h> 頭文件,我是自己下載的,這時程序總是提示:WINDOWS.H already included.  MFC apps must not #include <windows.h>錯誤。

 看來添加#include <stdafx.h>沒啥用,還是去掉#include <stdafx.h>只引用了#include <afx.h>,再編譯時又提示錯誤:VC: afxv_w32.h(216) : fatal error  C1004: unexpected end of file found,打開afxv_w32.h文件你會發現,他所說指定的錯誤行竟然沒有任何東西,你刪一行,錯誤提示就往前推一行。

     最後解決的辦法還是啓用了 #include <stdafx.h>,然後在#include <stdafx.h>文件中找到#include <windows.h>,在其前面引用 #include <afx.h>頭文件再保存編譯,你會發現問題解決了,而且奇怪的是之後我再刪除#include <stdafx.h引用竟然也可以編譯成功。

     最後成功的代碼如下,就只是引用了#include <afx.h>頭文件就可以使用CString了,真是好奇怪....害我今天折騰了一天,現在記錄下。

遇到的問題:在調試時沒報錯,編譯時就報如下錯誤:

--------------------Configuration: test - Win32 Debug--------------------
Compiling...
test.cpp
Linking...
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
Debug/test.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.

test.exe - 3 error(s), 0 warning(s)

 

    這個問題可以在 Project -> Settings -> C/C++ 中的Category 選擇 Code Generation,然後在下方的Use run-time library 中選擇 “debug multithreaded”  模式即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章