使用外部变量会导致"unsigned char"错误LNK2001

Using external Variables results in "unsigned char" Error LNK2001

本文关键字:unsigned char 错误 LNK2001 外部 变量      更新时间:2023-10-16

我在头文件中定义了两个extern unsigned char,用于在两个类之间传输两个char。在第一个.cpp中,我像普通变量一样使用它们来存储我从函数中获得的输入,而无需任何进一步的声明,如下所示:

测试.h

extern unsigned char tempName;
extern unsigned char tempValue;

测试.cpp

void NanoKontrol2::midi_in_proc(UINT wMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2) {
unsigned char ch_msg, data1, data2, data3;
switch (wMsg) {
case MIM_DATA:
ch_msg = (unsigned char)(0xFF & dwParam1);
data1 = (unsigned char)(0xFF & (dwParam1 >> 8));
data2 = (unsigned char)(0xFF & (dwParam1 >> 16));
data3 = (unsigned char)(0xFF & (dwParam1 >> 24));
/*on_message(ch_msg, data1, data2, data3);*/
tempName = data1;
tempValue = data2;
/*on_change_value(tempName, tempValue);*/
break;
default:
break;
}
}

现在我需要在第二类needhere.cppmidi_in_proctempVariables中存储的值。

我尝试在类中使用它们needhere.cpp如下所示:

if (NK2_FADER_0 <= tempName && tempName <= NK2_FADER_7) {
fader1 = tempValue;
}
//Knobs
else if (NK2_ROTARY_KNOB_0 <= tempName && tempName <= NK2_ROTARY_KNOB_7) {
knob1 = tempValue;
}

Visual Studio 不显示任何错误。但是当我尝试编译时,我得到这 6 个错误:

Severity    Code    Description Project File    Line    Suppression State
Error   LNK1120 3 unresolved externals  MayaNK2Node C:Users    1   
Error   LNK2001 unresolved external symbol "public: static class NanoKontrol2 MayaNK2Node::nanoKONTROL2" (?nanoKONTROL2@MayaNK2Node@@2VNanoKontrol2@@A  1   
Error   LNK2001 unresolved external symbol "unsigned char tempName" (?tempName@@3EA)    
Error   LNK2001 unresolved external symbol "unsigned char tempName" (?tempName@@3EA)    
Error   LNK2001 unresolved external symbol "unsigned char tempValue" (?tempValue@@3EA)  
Error   LNK2001 unresolved external symbol "unsigned char tempValue" (?tempValue@@3EA)  

你必须在某处定义tempName。extern unsigned char tempName;只是说"tempName 存在于我的程序中的某个地方",你也必须让它存在。

unsigned char tempName;

进行测试.cpp