一个问题,bcb编译不过,vc可以通过
unit1.c
#include "Unit2.h"
//---------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
ftemp=getFile(ftemp);
test();
return 0;
}
unit2.h
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <Windows.h>
#ifndef Unit2H
#define Unit2H
static FILE * ftemp;
FILE* getFile(FILE * fileName);
int test();
#endif
unit2.c
#include "Unit2.h"
#pragma package(smart_init)
FILE* getFile(FILE * fileName){
fileName = fopen("s:/22.txt", "w");
return fileName;
}
int test(){
printf("test %d",ftemp);
return 0;
}
[C++ Warning] Unit1.c(12): W8065 Call to function 'test' with no prototype
[Linker Error] Unresolved external '_getFile' referenced from S:\UNIT1.OBJ
[Linker Error] Unresolved external '_test' referenced from S:\UNIT1.OBJ
[解决办法]
你没编译 unit2.c
[解决办法]
unit2.c文件另存为unit2.cpp
unit2.h文件不变,工程中移出unit2.c,添加unit2.cpp再编译
[解决办法]
我已收到邮件,问题很简单:
1. 不需要更改.c为.cpp, 就把unit1.c和和unit2.c加入到工程就行。
2. W8065 的警告,是因为你这是C单元,函数的参数即使为空,也要显式加一个void
修正后的工程已发到你信箱。