DialogReprog.cpp
unsigned char PasswordValue[16];
unsigned char SystemKeyValue[16];
void CDialogReprog::OnOK()
{
// TODO: Add your control notification handler code here
char *ptr;
size_t count=0;
UpdateData();
TCHAR buffer[50];
GetDlgItemText(IDC_PASSWORD, buffer, 50);
ptr = (char *)buffer;
for(count = 2; count < 6; count++)
{
sscanf(ptr, "%2hhx",&PasswordValue[count-2]);
ptr += 2;
}
GetDlgItemText(IDC_SYSKEY, buffer, 50);
ptr = (char *)buffer;
for(count = 2; count < 18; count++)
{
sscanf(ptr, "%2hhx",&SystemKeyValue[count-2]);
ptr += 2;
}
UpdateData(FALSE);
CDialog::OnOK();
}需要访问C文件中的PasswordValue字节数组来访问数据,当我调试时,可以在监视窗口中看到数据(我正在使用VisualStudio2005forMyProject)
发布于 2015-12-21 01:06:51
如果您想用C代码访问C++代码,那么在编译和链接方面,您需要理解语言之间的一个主要区别。每种语言都使用名称残缺。这意味着相同的变量/函数将具有不同的链接器名称,这取决于您在C或C++中创建它。这也是为什么可以在C++中重载函数,而不能在C中重载的原因。
当涉及到修复您的问题时,最普遍且最简单的解决方案是声明这些变量,就像它们使用C样式的故障一样。要做到这一点,只需像这样使用extern "C":
extern "C"{
unsigned char PasswordValue[16];
unsigned char SystemKeyValue[16];
}在本例中,您将能够从C文件访问这些变量。
这同样适用于函数,但是这也意味着您不能使用像重载这些名称这样的C++特性(如果您尝试链接器会抱怨)。
https://stackoverflow.com/questions/34387582
复制相似问题