通用 LNK 2019 - 头文件中的函数声明 - 源文件中的定义
Common LNK 2019 - function declaration in header file - definition in source file
考虑到这是一个常见问题,如果使用此文件逻辑,此错误的来源可能是什么:
- Utils.h: 声明
bool Dummy();
- Utils.cpp: define
bool Dummy() {return true;}
- ClassA.h : 一个无关紧要的
class A { bool sheet; public: A(); };
-
A类.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
布尔__clrcall假人(无效)
您正在编译 ClassA.cpp 文件,该文件实际上具有/clr,并生成托管代码。 然而,你的 Dummy() 函数是在没有/clr 的情况下编译的,这使得调用约定__cdecl。 链接器注意到差异,它找不到 Dummy 的托管实现。
您必须告诉编译器 Utils.cpp 是针对本机代码构建的。 修复 A 类.cpp如下所示:
#pragma managed(push, off)
#include "Utils.h"
#pragma managed(pop)
#include "ClassA.h"
// etc...
相关文章:
- 在命名空间中定义函数还是限定函数
- 为什么在定义函数之前先声明它
- 使用用户定义函数的字符串反转
- 用户定义函数中的指针和输入
- 这个c++代码是如何在没有定义函数的情况下运行的
- 具有外部"c"和程序集的未定义函数
- 已定义函数时出现 G++ "未定义的引用"错误
- 将自定义函数传递到基抽象类中以延迟执行
- C++使用 rand 定义函数语法
- Arduino:在 loop() 和自定义函数中运行相同的代码时出现问题
- 将具有固定签名的自定义函数名称注入 CRTP
- 使用定义函数模板别名
- 是否可以使用单个定义定义函数的常量和常规版本?(使用模板,自动,decltype等)
- 在内联程序集中定义函数和从 C++ 调用时出现问题
- 在 Metal 着色器代码中,如何定义函数的 in/out 参数变量?
- 声明和定义函数静态会产生"undefined reference to function_name()"
- 朋友定义函数的名称空间是什么
- 介子 对用户定义函数的未定义引用
- 如何使用 "using" 关键字定义函数原型/签名
- 在 C 结构中定义C++函数