extern 的一点有关问题
extern 的一点问题在一个目标文件中声明extern void TributaryNum(UINT16 bAddr, UINT8 bTributaryNum)该
extern 的一点问题
在一个目标文件中声明
extern void TributaryNum(UINT16 bAddr, UINT8 bTributaryNum);
该文件包含了函数TributaryNum定义的头文件
连接的时候出现两个错误:
fatal error LNK1120: 1 unresolved externals
error LNK2019: unresolved external symbol \"void \_\_cdecl TributaryNum(unsigned short,unsigned char)\" (?TributaryNum@@YAXGE@Z) referenced in function \"public: unsigned char \_\_cdecl CPM8316Driver::ReadERR1(unsigned \_\_int64)\" (?ReadERR1@CPM8316Driver@@QAAE\_K@Z)
找不出错误的原因,求救
[解决办法]
我也遇到了关于extern的问题,写的和你一样的方式,如果是int型变量就可以,写成一个类对象就不可以,为什么呢?
[解决办法]
2.cpp中是不是漏掉了返回值 void?
TributaryNum(UINT16 bAddr, UINT8 bTributaryNum)
{
}
==》
void TributaryNum(UINT16 bAddr, UINT8 bTributaryNum)
{
}
[解决办法]
直接在头文件和.CPP文件中都不加extern试试
[解决办法]
2个CPP在同一个工程里么?
1.CPP如果使用了2.CPP中的TributaryNum函数,链接的时候又没有找到2.CPP编译出来的目标文件,肯定就链接错误了。
[解决办法]
1.cpp
#include "2.h"
// extern void TributaryNum(UINT16 bAddr, UINT8 bTributaryNum);
把这行去掉,你不是已经 #include "2.h"了吗
[解决办法]
[解决办法]1.cpp
#include "2.h"
extern void TributaryNum(UINT16 bAddr, UINT8 bTributaryNum);
2.h
void TributaryNum(UINT16 bAddr, UINT8 bTributaryNum);
2.cpp
TributaryNum(UINT16 bAddr, UINT8 bTributaryNum)
{
}
你是这样的?
2.cpp 包含了这个么?
#include "2.h"
这个应该和extern 没关系啊.
还有 ,如果像你这样用..根本不需要 extern 你不是包含了2.h么
[解决办法][解决办法][解决办法]说错了
1.cpp
#include "2.h"
TributaryNum(UINT16 bAddr, UINT8 bTributaryNum);
1.cpp就可以直接用函数了
[解决办法]你函数定义在了头文件里,2.cpp包含了头文件,就可以直接用了,不需要加extern~
[解决办法]直接在2.cpp中定义,
void TributaryNum(UINT16 bAddr, UINT8 bTributaryNum)
{
}
删除在2.h的定义,
之后在1.cpp:
#include "2.h"
extern void TributaryNum(UINT16 bAddr, UINT8 bTributaryNum);
[解决办法]------解决方案--------------------
我觉得可能是在函数定义中没有在CPP文件中声明返回值类型。在C++中是不允许这样的,而在C中如果不写返回值累心个,将默认为返回int。
[解决办法]如果仅考虑函数,不考虑类的话,这应该和编译顺序有关