C/C++实战011:解决使用VC++6.0编程遇到的问题

    受到加工现场电脑管制的限制,电脑无法安装Visual Studio 2012软件,为了适应现场的环境,不得不使用VC++6.0(免安装版本)来开发现场设备交互功能,目前主要是对FANUC设备进行二次开发,通过我们的智能铣削平台与设备进行对接,从而实现远程的控制设备并对设备进行参数修改和基本的信息采集。

C/C++实战011:解决使用VC++6.0编程遇到的问题

 问题1:用VC++6.0编写DLL时出现错误提示:cannot open file "kernel32.lib",这里是程序载入的文件路径不对,默认是D:\VC98\Lib,但是我的程序没有放在D盘根目录下,所以要自行修改,你也可以直接把程序放到相同的位置。

C/C++实战011:解决使用VC++6.0编程遇到的问题

解决方法:因为使用的是绿色免安装版本,所以配置需要修改一下,在菜单选择 Tools -> Option,在 打开的选项对话框中选择Directories,在Show directories for处下拉选项,找到Library files,然后把kernel32.lib所在的目录名添加进来。

C/C++实战011:解决使用VC++6.0编程遇到的问题

问题2:引入Fwlib32.h之后还是无法获取到对应的函数,编译时提示错误 unresolved external symbol __imp__cnc_allclibhndl3@16 ,因该是没找到对应的Fwlib32.lib文件。

C/C++实战011:解决使用VC++6.0编程遇到的问题

解决方法:在函数中直接引入Fwlib32.lib 文件, #pragma comment(lib, "Fwlib32.lib "),或者你也可以在porject ->settings的link页面中object/librarymodules中添加Fwlib32.lib,注意用空格区分开。

C/C++实战011:解决使用VC++6.0编程遇到的问题

问题3,VC++6.0不显示行号,代码一多想查找问题就很不方便 ,都不知道自己移到哪行了。下载 VC++6.0行号插件VC6 LineNumberAddin

C/C++实战011:解决使用VC++6.0编程遇到的问题解决方法:下载个VC++6.0插件VC6LineNumberAddin,把VC6LineNumberAddin.dll这个文件放到vc++6.0的安装目录下,我放在D:\VC98\Gallery\VC6LineNumberAddin中,双击VC6LineNumberAddin.reg进行注册然后在菜单栏找到Tools -> customize ->Add-ins and Macro Files ,浏览找到VC6LineNumberAddin.dll将其添加进Add-ins and Macro中并将其选中再点击关闭,重启VC++6.0就可以显示行号了。

C/C++实战011:解决使用VC++6.0编程遇到的问题

C/C++实战011:解决使用VC++6.0编程遇到的问题

问题4,编译后提示warning C4273: '***' inconsistent dll linkage.  dllexport assumed(DLLTExCed不一致) ,虽然编译通过但是总有警告提示,看着很是不舒服。

C/C++实战011:解决使用VC++6.0编程遇到的问题

     解决方法:这里是在test.h头文件中定义的问题,这里我定义的是_declspec(dllimport),dllimport是在Windows中从别的动态库中声明导入函数、类、对象等供本动态库,而__declspec(dllexport)则是在Windows的动态库中,声明导出函数、类、对象等供外面调用,将函数、类等声明为导出函数,为对外接口函数、类等供其它程序的调用的,所以这里我们要用到的应该是__declspec(dllexport)。

#ifndef DLL_API
//#define DLL_API _declspec(dllimport)  //从别的动态库中声明导入
#define DLL_API _declspec(dllexport)  //申明函数给其他程序调用
#endif

C/C++实战011:解决使用VC++6.0编程遇到的问题

上一篇:已解决:JObject.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: double __cdecl


下一篇:c – Deduce返回类型的成员函数