考虑到这是一个常见问题,如果使用此文件逻辑,可能会出现此错误的原因:
bool Dummy();
bool Dummy() {return true;}
class A { bool sheet; public: A(); };
ClassA.cpp:不相关的代码:
#include "Utils.h"
#include "ClassA.h"
A::A() { sheet = Dummy(); }
注意:所有标头文件都包含警卫#pragma once
宏。
错误:类似这样的
Error 2 error LNK2028: unresolved token (0A00000B) "bool __clrcall Dummy(void)"
Error 3 error LNK2019: unresolved external symbol "bool __clrcall Dummy(void)" .... in ClassA.obj
答案 0 :(得分:2)
bool __ clrcall Dummy(void)
您正在使用/ clr编译ClassA.cpp文件,生成托管代码。但是你的Dummy()函数是在没有/ clr的情况下编译的,这使得调用约定为__cdecl。链接器注意到差异,它无法找到Dummy的托管实现。
您必须告诉编译器Utils.cpp是为本机代码构建的。像这样修复ClassA.cpp:
#pragma managed(push, off)
#include "Utils.h"
#pragma managed(pop)
#include "ClassA.h"
// etc...