问题1.: fatal error C1083: 无法打开包含文件:“iostream.h”: No such file or directory
解决办法:
将 #include "iostream.h" //(vc++6.0)
替换为: //(vc++7.0 /vc++.net)
#include "IOSTREAM" // 包含流的旧式头文件 //使用旧的iostream头文件不要加.h
using namespace std; //另需添加部分
PLCHandler.obj : error LNK2001: unresolved external symbol "public: bool __thiscall PLCDB90::read(long,long,long * const)" (?read@PLCDB90@@QAE_NJJQAJ@Z)
PLCHandler.obj : error LNK2001: unresolved external symbol "public: bool __thiscall PLCDB80::read(long,long,long * const)" (?read@PLCDB80@@QAE_NJJQAJ@Z)
bin/PlcOperation.exe : fatal error LNK1120: 2 unresolved externals
在plcdb90.cpp文件中没有对其实现
PLCDB90::read(long,long,long * const)
2*****************
问题:
--------------------Configuration: DataTrans - Win32 Debug--------------------
Compiling
DataTrans.cpp
D:\VC60Projects\DataTrans\DataTrans.cpp(22) : error C2065: 'cout' : undeclared identifier
D:\VC60Projects\DataTrans\DataTrans.cpp(22) : error C2297: '<<' : illegal, right operand has type 'char [4]'
D:\VC60Projects\DataTrans\DataTrans.cpp(22) : error C2065: 'endl' : undeclared identifier
D:\VC60Projects\DataTrans\DataTrans.cpp(23) : warning C4552: '<<' : operator has no effect; expected operator with side-effect
PLCHandler.cpp
DataHelper.cpp
Generating Code
Error executing cl.exe.
DataTrans.exe - 3 error(s), 1 warning(s)
//****************************************************
解决:
在project setting里面的 c/c++ 选项卡
在combo里面找到 precompiled header
选择 no precompiled header 即可
3***********************
bool bflag型
bool 应大写为 BOOL
4***********************
c1.h,c2.h 头文件的互相包含
c1.h中写上#include "c2.h",class c2;
c2.h中同样如此.
5*******************************
d:\shengwuproject\0911\dbcallback.cpp(15) : error C2371: 'public: static class PLC * cTestCallBack::pLCDB902' : redefinition; different basic types
d:\shengwuproject\0911\dbcallback.h(34) : see declaration of 'public: static class PLC * cTestCallBack::pLCDB902'
PLC *cTestCallBack::pLCDB902; //静态变量声明
前面声明的类型plc和后面的*cTestCallBack::pLCDB902 变量类型plcdb90不一样.
6=============================
已经包含了#include <process.h>头文件,编译时仍然说'_beginthread' undeclared identifier
解决:
根据下列步骤进行设置.
project->settings->c/c++:
Category:Code Generation
Use run-time library:
debug version:
Debug Multithread DLL
release version:
Multithread DLL
7==============================
问题:
PLCDB90.obj : error LNK2001: unresolved external symbol "class ATL::CComModule _Module" (?_Module@@3VCComModule@ATL@@A)
bin/PlcOperation.exe : fatal error LNK1120: 1 unresolved externals
解决:
添加ATL头文件
使用ATL前必须包含以下头文件:atlbase.h和atlcom.h,并且定义_Module变量[2]。把以下代码加到stdafx.h是最方便的:
#include <atlbase.h>
extern CComModule _Module;
#include <atlcom.h>
在cpp文件中要对_Module进行定义。如下:
CcomModule _Module;
在添加了这两行之后,我们就可以使用ATL的功能了。而不必创建ATL的项目。
当然,如果项目是通过ATL项目向导产生的就不必再次添加头文件了。
http://www.jr163.org/cup2/18/18781.htm
8===================================
问题:
在MFC(界面)下调用PLC com组件,能响应Com回调dataChange事件,在控制台程序则不能.
原因:
因为COM利用消息机制来实现STA,因此STA套间里的线程必须实现消息循环,否则COM将不能实现STA的要求。
解决:
在程序中加入:
#include <windows.h>
// Main message loop:
MSG msg;
while/if(GetMessage(&msg, NULL, 0, 0))
{
// TranslateMessage(&msg);
DispatchMessage(&msg);
}