注册 登录
编程论坛 C++教室

请教关于不同文件间调用函数的问题?

edongliang 发布于 2009-12-27 19:57, 1136 次点击
请教个问题
我在1.h中定义extern void my_test_fuc();
  
1.cpp文件中定义如下:
void my_test_fuc()
{
int my_times=45;
fl_alert("No occurrences of \'%d\' found!", my_times);
}
在我引用的文件中也加了1.h文件
但是它还是报错误:fatal error LNK1120: 1 个无法解析的外部命令
这是什么原因啊
3 回复
#2
yangliangbin2009-12-27 21:05
看不懂你的。。。举个简单的例子-----------------------------
//main.cpp文件如下:
#include<iostream>
#include<string>
#include"1.h"//外部文件
using namespace std;


void main()
{
    write1("hehe");
}
void write1(string s)
{
    cout<<s<<endl;
}
---------------------------
//1.h文件如下:
#include<iostream>
using namespace std;
main()
{
void write1(string);
}
#3
debroa7232009-12-28 22:12
上面的错误显示在链接的时候去找my_test_fuc这个函数的实现代码,但找不到了,所以就成了无法解析的外部命令了。
观察1.cpp是否被编译了,并保证在调用该函数之前包含了头文件1.h。
另外要搞清楚声明和定义的区别,声明只是告诉编译器,有这样一个东西的存在,定义才是说明它实际的样子。
以下都为声明:
int i ;
void fun(void);
class xxxx
{
}

它们的实现代码是定义,也有声明和定义并存的,如:
int i = 10;
只要声明了的东西,编译是通过的,但如果没有定义,对函数来说,在链接时就会报出错误。对变量来说,在运行期可能会出错。
说地很零乱,还是要靠自己实践调试来领会。
#4
zb07nju2009-12-30 17:14
我写了一个类似的程序没有任何问题,ertern的声明表示函数的定义在外部文件,运行的时候会自动到外部文件中寻找。
1