C/C++实战012:VC++6.0控制台使用CString

版权声明:以上内容为本人原创,如需转载,请注明出处,谢谢! https://blog.csdn.net/kevinfan2011/article/details/87916872

     今天在写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”  模式即可。

猜你喜欢

转载自blog.csdn.net/kevinfan2011/article/details/87916872