当前位置:  开发笔记 > 编程语言 > 正文

Visual C++未解析的外部符号(找不到我自己的一个函数)

如何解决《VisualC++未解析的外部符号(找不到我自己的一个函数)》经验,为你挑选了2个好方法。

这是一个非常基本的问题,令我感到沮丧.让我们说在一个解决方案中,我有两个项目.让我们调用第一个项目SimpleMath.它有一个头文件"Add.h",它有

int add(int i, int j)

和实现"Add.cpp"有

int add(int i, int j) {
  return i+j;
}

现在让我们说在第二个项目中我想使用add函数.但是,这段代码:

#include"..\SimpleMath\Add.h"

int main() {

    add(1, 2);

}

导致"未解决的外部符号".如何让第二个程序"知道".cpp文件中的实际实现.作为旁注,所有代码都是虚构的,这不是我实际编程的方式.



1> korona..:

你得到的错误的原因是,通过包含头文件,你告诉编译器有一个符号

int add (int, int)

这将在链接期间出现,但您实际上并未在项目中包含该符号(函数的代码).解决该问题的一种快速方法是简单地将Add.cpp添加到两个项目中.但"好"的解决方案可能是通过更改项目属性中的项目类型将SimpleMath放入库而不是应用程序.

顺便说一句,您可能需要某种机制来防止多个包含该头文件.我通常使用#pragma once哪个应该没问题,如果你坚持使用Visual C++,但这可能不是完全可移植的,所以如果你想要可移植性,那么采用更传统的方法将头文件包装在#ifndef-block中,如下:

#ifndef __ADD_H
#define __ADD_H

int add (int i, int j);

#endif

祝好运.



2> 小智..:

如果您正在尝试将C库链接到C++项目中,则需要执行类似的操作

extern "C" {
    #include "..\SimpleMath\Add.h"
}

因为C和C++使用不同的符号名称.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有