阅读:1793回复:8
vtoolsd开发的vxd中可以使用不同文件里的类里的函数吗?
vtoolsd开发的vxd中可以使用不同文件里的类里的函数吗?
比如:a.cpp里有CAClass::AFunc() b.cpp里有CBClass::BFunc() 那么在AFunc()中可以引用BFunc()吗? |
|
沙发#
发布于:2003-01-22 15:43
当然可以,VTOOLSD的C++和普通的C++是一样的
|
|
板凳#
发布于:2003-01-22 18:10
#define DEVICE_MAIN
#include \"fmsystem.h\" #undef DEVICE_MAIN #include \"IOControl.h\" DWORD FmsystemDevice::OnW32DeviceIoControl(PIOCTLPARAMS p) { DWORD nReVal=0; CIOControl ioCtl; switch(p->dioc_IOCtlCode) { case DEVICEIO_MODE_MONITON: if(!ioCtl.HookControl_MonitON(p)) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~这个地方出错了(编译出错) nReVal= 1; break; } return nReVal; } 这段代码是程序的一部分,为什么不能引用CIOControl类里的HookControl_MonitON()?? 谢谢,在帮以下吧 |
|
地板#
发布于:2003-01-23 09:42
要看你的类声明才知道。出错信息是什么?
还有,CIOControl ioCtl;声明成局部变量?这种做法很少哦 |
|
地下室#
发布于:2003-01-23 14:40
错误信息如下:
fmsystem.OBJ : error LNK2001: unresolved external symbol \"public: int __thiscall CIOControl::HookControl_MonitON(struct tagIOCTLParams *)\" (?HookControl_MonitON@CIOControl@@QAEHPAUtagIOCTLParams@@@Z) 函数声明也很简单 IOControl.h里 class CIOControl { public: BOOL HookControl_MonitON(PIOCTLPARAMS p); }; 跟函数体没关系,就不写了. 后来我把函数体(.cpp)引入后就可以编译了. 不过这样要头文件有何用? 还有个问题顺便问一下 typedef struct tagFMS_USEINFO { DWORD Index; unsigned char FolderPath_Long[256]; } FMS_USEINFO, * LPFMS_USEINFO; LPFMS_USEINFO FMS_UseInfo[10]; for (int i = 0; i < 10; i++) { FMS_UseInfo = HeapAllocate(sizeof(FMS_USEINFO), HEAPZEROINIT); } .\\fmsystem.cpp(30) : error C2440: \'=\' : cannot convert from \'void *\' to \'struct tagFMS_USEINFO *\' 再次表示感谢 |
|
5楼#
发布于:2003-01-23 15:06
上面的类型错误问题解决了
FMS_UseInfo = (LPFMS_USEINFO)HeapAllocate(sizeof(FMS_USEINFO), HEAPZEROINIT); |
|
6楼#
发布于:2003-01-23 15:44
后来我把函数体(.cpp)引入后就可以编译了.
不过这样要头文件有何用? >>> 头文件只是声明,只在编译时使用,连接时如果找不到某个OBJ或者LIB中有类型同样的符号,就是出现开始那个错误。 LPFMS_USEINFO FMS_UseInfo[10]; for (int i = 0; i < 10; i++) { FMS_UseInfo = HeapAllocate(sizeof(FMS_USEINFO), HEAPZEROINIT); } >>> 你改成FMS_UseInfo = (LPFMS_USEINFO)HeapAllocate(sizeof(FMS_USEINFO), HEAPZEROINIT); 这段代码好象有点问题,正确应该这样写: LPFMS_USEINFO FMS_UseInfo[10]; for (int i = 0; i < 10; i++) { FMS_UseInfo = (LPFMS_USEINFO)HeapAllocate(sizeof(FMS_USEINFO), HEAPZEROINIT); } 或者: LPFMS_USEINFO FMS_UseInfo; FMS_UseInfo = (LPFMS_USEINFO)HeapAllocate(sizeof(FMS_USEINFO) * 10, HEAPZEROINIT); [编辑 - 1/23/03 by Coolice] |
|
7楼#
发布于:2003-01-23 15:50
咦~
FMS_UseInfo【i】的中括号怎么没显示出来?这么说你的代码是对的,只是显示不正确,哈哈~ |
|
8楼#
发布于:2003-01-23 21:43
>>LPFMS_USEINFO FMS_UseInfo;
>>FMS_UseInfo = (LPFMS_USEINFO)HeapAllocate(sizeof(FMS_USEINFO) * 10, HEAPZEROINIT); 这个好像有问题,不过没关系了 >>连接时如果找不到某个OBJ或者LIB中有类型同样的符号,就是出现开始那个错误。 谢谢你的提醒,我忘了修改mak文件了. |
|