首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ LNK2001 异常

2013-07-04 
C++ LNK2001 错误我在编译一个动态链接库 打算编完后用另外一个工程main调用执行可是在编译过程中出现了LN

C++ LNK2001 错误
我在编译一个动态链接库 打算编完后用另外一个工程main调用执行
可是在编译过程中出现了LNK2001 这个错误  

这个程序还没写完  只是写了一小部分验证对错,结果编译不通过 :
record.obj : error LNK2001: unresolved external symbol "public: static struct _iobuf * RecordPlayback::file" (?file@RecordPlayback@@2PAU_iobuf@@A)

这个struct _iobuf *是什么  我都没有用过它 是那个头文件里的吗?  RecordPlayback是我定义的一个类名,file是一个FILE类型指针   感觉就是file出了问题  但我不明白……C++ LNK2001 异常

求高手指点 实在不懂这个 我是菜鸟,经常被LNK2001这种错误困住  谢谢

我用的是VC6.0

代码如下:
record.h

#include "StdAfx.h"
#include <iostream>
#include <string>
using namespace std;
class RecordPlayback{
public:
//static string filePath;
static FILE *file;
static HHOOK mouseHook;
static HHOOK keyboardHook;
static bool fileIsOpen;
static bool isRecording;
static bool isPlaying;
public:
RecordPlayback(){
}
~RecordPlayback(){
}

public:
static bool openFile();
static bool closeFile();
void beginRecord();
void endRecord();
public:
static bool readFile();//阅读脚本文件
};


record.cpp
#include "record.h"
FILE *file = NULL;
HHOOK RecordPlayback::mouseHook = NULL;
HHOOK RecordPlayback::keyboardHook = NULL;
bool RecordPlayback::fileIsOpen = false;
bool RecordPlayback::isRecording = false;
bool RecordPlayback::isPlaying = false;
bool RecordPlayback::openFile(){
if(fileIsOpen == true){
return true;
};
if(isRecording == true && isPlaying == false){
if((file = fopen("./Script.bat","w")) == NULL){//此处有file 就会出错
cout<<"文件打开失败";
}
}
else if(isRecording == false && isPlaying == true){
if((/*file =*/ fopen("./Script.bat","r")) == NULL){//如果想此处一样file
                                                                //注释掉就无错
cout<<"文件打开失败";
}
}
else cout<<"录制、播放方式不确定,无法打开";
fileIsOpen = true;
return true;
}
bool RecordPlayback::closeFile(){
if(fileIsOpen == true){
fileIsOpen = false;
//fclose(file);
}
return true;
}
void RecordPlayback::beginRecord(){//开始录制
isRecording = true;
openFile();
}
void RecordPlayback::endRecord(){
isRecording = false;
closeFile();
}


动态库主程序(感觉无关,省略):

BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved){
}
C++


[解决办法]
建议:远离vc6,如果一定要用,请打sp6补丁
[解决办法]
FILE *file = NULL;
改成
FILE * RecordPlayback::file = NULL;

热点排行