雷塞SMC304系列控制器VC6.0例程在VS2015下编译遇到的若干问题及解决办法

标签(空格分隔): 雷塞 SM304 WIN10 VS2015


最近由于导师要求,负责喷涂机器人的控制部分,接触到雷塞公司的控制器产品SM304,首先想着从给的例程入手,但由于例程是VC6.0的程序,而我的电脑是WIN10系统,用VC6.0起来十分的不方便,因此想到在VS2015下重新编译一遍源代码,下面是编译过程中遇到的一系列问题。

0.在VS2015中创建一个空项目,将例程中所有文件按类别导入

配置:
(1)链接器–>系统–>子系统
选择:“窗口 (/SUBSYSTEM:WINDOWS)”
参考:MFC 必须定义入口点 解决办法

如果未配置出现错误:

d:\vs2015\vc\atlmfc\include\afx.h(38): warning C4996: ‘MBCS_Support_Deprecated_In_MFC’: MBCS support in MFC is deprecated and may be removed in a future version of MFC.
1> d:\vs2015\vc\atlmfc\include\afx.h(33): note: 参见“MBCS_Support_Deprecated_In_MFC”的声明
1> _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)
1> DMCd1DLG.cpp
1> DMCd1.cpp
1>LINK : fatal error LNK1561: 必须定义入口点

(2)配置属性–>常规–>MFC的使用
选择:“在共享DLL中使用MFC”
参考:在共享DLL中使用MFC

如果未配置出现错误:

1>d:\vs2015\vc\atlmfc\include\afx.h(24): fatal error C1189: #error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
1> DMCd1DLG.cpp
1>d:\vs2015\vc\atlmfc\include\afx.h(24): fatal error C1189: #error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
1> DMCd1.cpp
1>d:\vs2015\vc\atlmfc\include\afx.h(24): fatal error C1189: #error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]

(3)配置属性–>常规–>字符集
选择:“使用多字节字符集”
参考:CWnd::MessageBoxW”: 不能将参数 1 从“const char [16]”转换为“LPCTSTR

如果未配置出现错误:

1>g:\喷涂机器人\spraying robot\spraying robot\dmcd1dlg.cpp(90): error C2664: “int CWnd::MessageBoxW(LPCTSTR,LPCTSTR,UINT)”: 无法将参数 1 从“const char [11]”转换为“LPCTSTR”

1> g:\喷涂机器人\spraying robot\spraying robot\dmcd1dlg.cpp(181): note: 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换

(4)配置属性–>C/C++–>预编译头
选择:“创建 (/Yc)”
参考:有关无法打开预编译头文件错误的思考

如果未配置出现错误:

1>d:\vs2015\vc\atlmfc\include\afx.h(38): warning C4996: ‘MBCS_Support_Deprecated_In_MFC’: MBCS support in MFC is deprecated and may be removed in a future version of MFC.
1> d:\vs2015\vc\atlmfc\include\afx.h(33): note: 参见“MBCS_Support_Deprecated_In_MFC”的声明
1> _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)

1.错误1:Enable3dControls问题

参考:Enable3dControls警告

1.1 错误信息

1>g:\喷涂机器人\spraying robot\spraying robot\dmcd1.cpp(53): error C4996: ‘CWinApp::Enable3dControls’: CWinApp::Enable3dControls is no longer needed. You should remove this call.
1> d:\vs2015\vc\atlmfc\include\afxwin.h(5224): note: 参见“CWinApp::Enable3dControls”的声明

1.2 解决方法

定位到代码:

#ifdef _AFXDLLEnable3dControls();         // Call this when using MFC in a shared DLL
#elseEnable3dControlsStatic();   // Call this when linking to MFC statically
#endif

主要由于版本问题所导致的,Windows95以后就不需要再调用这两个函数了,因此使用_MSC_VER对其进行隔离即可:

#if _MSC_VER <= 1200 // MFC 6.0 or earlier  #ifdef _AFXDLL  Enable3dControls();            // Call this when using MFC in a shared DLL  #else  Enable3dControlsStatic();    // Call this when linking to MFC statically  #endif
#endif

2.错误2:外部符号无法解析

参考:vs2015引用lib库

2.1 错误信息

1> DMCd1.cpp
1>DMCd1DLG.obj : error LNK2019: 无法解析的外部符号 _smc_board_init@16,该符号在函数 “protected: virtual int __thiscall CDMCd1Dlg::OnInitDialog(void)” (?OnInitDialog@CDMCd1Dlg@@MAEHXZ) 中被引用

1>DMCd1DLG.obj : error LNK2019: 无法解析的外部符号 _smc_get_position_unit@12,该符号在函数 “protected: void __thiscall CDMCd1Dlg::OnTimer(unsigned int)” (?OnTimer@CDMCd1Dlg@@IAEXI@Z) 中被引用
1>G:\喷涂机器人\Spraying robot\Debug\Spraying robot.exe : fatal error LNK1120: 17 个无法解析的外部命令

2.2 解决方法

(1)配置属性–>C/C++–>常规–>附加包含目录
添加:你的LTSMC.lib所在目录

(2)配置属性–>链接器–>输入–>附加依赖项
添加:LTSMC.lib

(3)将对应的dll文件放到与exe同一级目录下

3.显示结果

编译后得到一个简易的控制软件界面,连接好SMC304后根据文档设置好以太网参数即可直接控制,随后便在VS2015上对程序进行进一步修改,实现自定义控制!
例程软件界面:

SMC304用户手册内容:

本例中的 SMC304 的 IP 地址为 192.168.5.11, PC 机设置的 IP 与 SMC304 的 IP 前 3 个字段要相同,第 4 个字段要不同。如图 3-8 所示, PC 机设置的 IP 设为 192.168.5.6 即可。

PS:由于雷塞公司提供的是32位库,因此编译的时候必须选择x86

雷塞SMC304系列控制器VC6.0例程在VS2015下编译遇到的若干问题及解决办法相关推荐

  1. [转]VC6.0无法打开文件和无法向工程添加文件的解决办法

    今天用VC开发的时候,新建两个类后,发现没有要类视图那里显示,在文件那里也没看到,于是就想自己手动把这两个类加到工程中去,没想到一点添加文件就发生内存读写错误.开始以为是软件出错了,重启软件后,还是一 ...

  2. vc6.0使用PathFileExists(...)函数的时候链接错误的解决办法

    PathFileExists(...)函数使用的时候链接错误: error LNK2001: unresolved external symbol __imp__PathFileExistsA@4 首 ...

  3. 运行报Invalid property 'specParamList[0][specName]' of bean class [com.model.Produ... 报错的解决办法

    运行报Invalid property 'specParamList[0][specName]' of bean class [com.model.Produ... 报错的解决办法 前端需要进行JSO ...

  4. 三菱FX系列PLC电池电压低导致程序参数丢失,PROG.E报警灯闪烁的解决办法

    三菱FX系列PLC电池电压低导致程序参数丢失,PROG.E报警灯闪烁的解决办法 由于长时间断电,重新开机后,操作人员反映设备无法启动,查看PLC面板报警如下图所示: 此时电源灯POWER正常: 运行灯 ...

  5. VC6.0 在WIN10专业版下如何完美运行。(附西红柿助手)

    记录一下碰到的问题; 戴尔G系列笔记本,由于项目维护需要装VC6.0,安装过程有过几个报错,但是也能运行,也能编译,就是没有回退键.查找变量及其麻烦.后续在网上找到了一个版本的VC6.0以及西红柿助手 ...

  6. 解决安装VC6.0后出现MSDEV.EXE错误,无法用打开工程解决方法

    问题:安装VC6.0后,在打开项目或添加文件时,出现如下错误: 可能导致原因:由于Ms安装软件的兼容性问题,导致VC6.0安装不完全, 解决方法:--网上打sp6补丁的方法貌似不可用,所以可以采用另一 ...

  7. “约见”面试官系列之常见面试题之第四十九篇之ie6bug的解决办法(建议收藏)

    IE6浏览器的bug问题及相关解决的方法 1.css浮动边距加倍错误(双倍边距BUG)的解决办法   该错误只影响ie而不影响其他浏览器,我们可以考虑用hack来解决!!!   解决方法:_displ ...

  8. 新浪微博oauth2.0弹出验证dialog中输入框被输入法覆盖的解决办法

    关于新浪微博oauth2.0弹出dialog验证时,输入框会被输入法覆盖的问题的一个解决办法. 方法一:      由于我在做项目支持新浪微博的时候是直接引入新浪SDK源文件的(网上有很多相关的文章, ...

  9. .NET Core 3.0 System.Text.Json 和 Newtonsoft.Json 行为不一致问题及解决办法

    行为不一致 .NET Core 3.0 新出了个内置的 JSON 库, 全名叫做尼古拉斯 System.Text.Json - 性能更高占用内存更少这都不是事... 对我来说, 很多或大或小的项目能少 ...

最新文章

  1. 突发 | Yann LeCun卸任!Facebook变天,做AI不能落地是不成了
  2. 【干货】从国外知名网站看用户体验4个基本标准
  3. tomcat问题记录-线程池引发的问题
  4. MySQL编程技巧_MySQL编程中的6个重要的实用技巧
  5. 如何在c语言中源文件调用另一个源文件的函数
  6. 为什么使用了索引,查询还是慢?
  7. 如何找到ngrx action匹配的取数据代码 - 谈谈Spartacus Product Carousel控件数据的读取
  8. 用javascript实现有效时间的控制,并显示要过期的时间
  9. perfdog 性能狗之Jank
  10. Spring boot上传文件(图片)到阿里云OSS(直接上传到应用服务器)
  11. springboot 常用插件
  12. android获取按钮上的字,Android--在一个Button上显示不同类型的字体
  13. xendesktop更新计算机,XenApp / XenDesktop 7.6 初体验二 配置计算机目录和交付组
  14. 关于U盘还原安装Mac系统
  15. 软工网络15团队作业4——Alpha阶段敏捷冲刺之Scrum 冲刺博客(Day3)
  16. 关于Iphone 4 如何用itunes备份短信等设置
  17. c++语言如何判断奇偶数,C++ 判断奇数偶数
  18. Android app跳转QQ加人聊天或者加群
  19. 华理c语言设计网上作业,华理网上作业 之 大学英语预备
  20. redis集群模式登陆

热门文章

  1. 乔春洋:品牌定位剖析
  2. 码农们的「血与泪」:新零售「全渠道中台」的前世今身
  3. Unity透明软件背景,显示桌面背景方案
  4. 一文搞定Netty,打造单机百万连接测试!
  5. 免费APP在线测试工具以及其使用方法
  6. 连续苦情剧:机器学习入门笔记(二):线性模型
  7. SIP的基本工作过程
  8. 微信 关注/取消关注事件
  9. 网页图片刷新闪烁解决办法
  10. 软件工程—Chapter2 计划