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出了问题 但我不明白……
求高手指点 实在不懂这个 我是菜鸟,经常被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();//阅读脚本文件
};
#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();
}
C++
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved){
}
[解决办法]
建议:远离vc6,如果一定要用,请打sp6补丁
[解决办法]
FILE *file = NULL;
改成
FILE * RecordPlayback::file = NULL;