我已经制作了一个在32位模式下编译的dll,但是在64位模式下编译时(在32位盒子交叉编译和本机64位盒子上)我得到了上述错误。 它抱怨的符号如下:
"struct return_info_ * __cdecl patch_file(char *,char *,char *)"
我是C ++的新手,但我认为我已正确定义了结构和签名。 结构“return_info_”定义如下:
typedef struct return_info_
{
char *message;
int code;
} return_info;
在同一个标题中,我有函数的签名:
return_info* patch_file(char* oldfile, char* newfile, char* patchfile);
这都是本机c / c ++代码,它被编译为静态链接库。然后我有我们的主库链接到这个并且是clr兼容的二进制文件。有什么想法为什么64位编译器会抛出这些错误?
答案 0 :(得分:1)
标题中的声明看起来是正确的,但由于某种原因,在64位版本中,未找到实际的实现。
这是在您的图书馆中定义的吗?它的64位版本可能没有正确编译。
如果这是一个属于您的应用程序的函数,请确保正确的源文件也包含在64位构建过程中。