visual stdio2010 c++ 中怎么编译多文件

问题描述

visual stdio2010 c++ 中怎么编译多文件

请问如何visual stdio 2010 c++ 中编译多文件。我的情况是这样的,使用了默认的windons console 模式。在工程中,包含了stdafx.h stdafx.cpp targetver.h和main.cpp这几个文件.我在写入一个test.cpp文件,里面有一个函数void test().但是总是提示我说:找到一个或多个多重定义的符号。不知道一般怎样在visual stdio中写这样的包含文件的工程啊?

解决方案

如果这个函数已经在另一个文件定义,这里只是声明函数原型,前面要加上extern
extern void test();

解决方案二:

找到一个或多个多重定义的符号,是指的你在 test.cpp 文件里面定义的函数void test() 吗?如果是,说明重复定义了。
两个改法:
(1)如果与已经有的 test() 函数功能是相同的,则在 test.cpp 中只需要声明就可以使用了。**不能再次定义**!

(2)如果与已经有的 test() 函数功能是不同的,则只能采用另一个函数名。

解决方案三:

如果与已经有的 test() 函数功能是相同的,则在 test.cpp 中只需要声明就可以使用了。**不能再次定义**!

解决方案四:

我把代码贴出来吧。
test.cpp
#include

void test()
{
std::cout << "hello world!" << std::endl;
}

main.cpp
#include
#include "test.cpp"

using namespace std;

int main()
{
test();
return 0;
}

F7编译的时候出现错误,1>zmain.obj : error LNK2005: "void __cdecl test(void)" (?test@@YAXXZ) already defined in test.obj
1>X:newclassmaketestDebugmaketest.exe : fatal error LNK1169: one or more multiply defined symbols found

请大家看看啊

解决方案五:

有两种方法可以解决这个问题了,一个是在void test()前面加上inline关键词,另外一种就是加上一个"test.h"文件,再在"test.cpp"中用include包含
就可以通过,代码是这样的:
test.h
#include

void test();

test.cpp
#include "test.h"

void test()
{
std::cout << "hello world a!" << std::endl;
}

main.cpp
#include
#include "test.h"

using namespace std;

int main()
{
test();
return 0;
}

问题是,一定要这两种才行么?我之前不加.h文件为什么不可以呢?

解决方案六:

#include "test.cpp" 这种把实现文件当作头文件使用的方法是不推荐的
解决方案是
1)添加一个 头文件 test.h
写上
extern void test();
或者
void test();
函数的外部声明,通常不需要加上 extern
因为函数缺省就是 extern 存储类型的。
#include "test.cpp"
改成
#include "test.h"

另一种方法是:
不编译 "test.cpp" , test.cpp不添加到工程中,只是放到目录中,当作头文件使用
这个方法是不推荐的

解决方案七:

工程文件实质上是一种 makefile 性质的文件

凡是添加到工程文件中的 实现文件,通常都会编译为目标文件 (*。obj),链接到可执行文件中。
所以,#include "test.cpp"
这种方式,或造成 "test.cpp" 内的代码被编译两次以上
1次 编译到 test.obj 中
此外还会编译到其他 .obj 中
这样一份代码,就生成多个 同名函数的代码
自然链接的时候就出现多重定义了

解决方案八:

头文件是否重复包含,函数重名了,多次定义

解决方案九:

首先建立一个工程,然后把源文件添加进去。你为每一个c文件建立一个对应的h文件,其他别的c文件调用时只用加上你用的那个对应的h文件

时间: 2024-10-22 08:09:05

visual stdio2010 c++ 中怎么编译多文件的相关文章

vhdl modelsim-求大神帮忙,modelsim中单独编译VHDL文件都是对的,但是运行仿真时报错

问题描述 求大神帮忙,modelsim中单独编译VHDL文件都是对的,但是运行仿真时报错

解析VC中预编译头文件的深入分析_C 语言

一.为什么预编译头文件:预编译头的概念: 所谓的预编译头就是把一个工程中的那一部分代码,预先编译好放在一个文件里(通常是以.pch为扩展名的),这个文件就称为预编译头文件这些预先编译好的代码可以是任何的C/C++代码,甚至是inline的函数,但是必须是稳定的,在工程开发的过程中不会被经常改变.如果这些代码被修改,则需要重新编译生成预编译头文件.注意生成预编译头文件是很耗时间的.同时你得注意预编译头文件通常很大,通常有6-7M大.注意及时清理那些没有用的预编译头文件.也许你会问:现在的编译器都有

vscode 运行环境-求大神告知:如何在 visual studio code中编译运行C/C++代码?

问题描述 求大神告知:如何在 visual studio code中编译运行C/C++代码? 求大神告知:如何在 visual studio code中编译运行C/C++代码,如需配置环境,怎么配置?求详细操作,拜谢! 解决方案 http://stackoverflow.com/questions/30269449/how-do-i-set-up-vscode-to-compile-c-code google下就有答案 解决方案二: 如何在visual studio2015 中配置编写C.C++

.net入门之VB篇:Visual Basic.Net中的文件操作(一)

visual Visual Basic.Net中有三种访问文件系统的方法:第一种是使用 Visual Basic 运行时函数进行文件访问 (VB传统方式直接文件访问):第二种是通过.Net中的System.IO模型访问:第三种是通过文件系统对象模型FSO访问. 文件是存储在某种介质上数据的集合,就其本身来讲,文件只不过是磁盘上的一系列相关的数据字节.当应用程序访问文件时,它必须假定字节是否表示字符.数据记录.整数.字符串等.通过指定文件的访问类型来告诉应用程序假定什么内容. Visual Bas

在Visual Studio 2008中编译F#程序

在Visual Studio 2008中,编译F#程序时,会出现警告(但不是错误),但是由于这个警告却使你的程序无法运行,不过大多数据这些警告都会有提示,提示你用.NET里的函数代替F#中的某些函数,但是这些.NET中的函数又不能像在C#中那样使用. 例如: #light let one = ["one "] let two = "two " :: one let three = "three " :: two let rightWayRound

Android中如何反编译apk文件

相信大家在安装使用了一个apk后,看到一些好的效果或实现,一般会很想知道这个是如何实现的.还好,android选的是java开发语言,所以经过一些小步骤,而作者又没有用混淆的话,差不多可以返原70 ~ 90 的java实现,下面我就来说下Android apk 的反编译步骤: 解压缩apk包:将apk文件的后缀改名为.zip,然后对zip文件进行解压. 反编译dex文件:解压apk文件后,你会发现res目录的图片没有加密,但java源码编译成了一个classes.dex文件,无法用普通的反编译c

visual studio-vc中怎么把LIB文件嵌入新的LIB文件中?

问题描述 vc中怎么把LIB文件嵌入新的LIB文件中? 在一个vs工程中,编译生成一个lib文件,这个lib文件需要依赖其他的多个lib文件,这个编译生成的lib文件需要在其他工程中用到,怎样在这个工程中只需要导入这个编译新生成的lib就可以了?而不需要在这个工程中导入它所依赖的lib. 解决方案 http://blog.csdn.net/yuucyf/article/details/8530915 解决方案二: Vc中添加lib和h文件Vc中添加lib和h文件VC中打开mclmcrrt.lib

visual studio-关于cocos2d studio中添加按钮发布在vs中然后通过csb文件写回调函数

问题描述 关于cocos2d studio中添加按钮发布在vs中然后通过csb文件写回调函数 在cocos2d studio做好了按下效果,现在就不需要在vs里写按下效果了,直接写回调函数 就行了,但是我现在不知道是要写检测按下动作还是绑定精灵create的时候加载回调函数.我现在 auto rootNode = CSLoader::createNode("MainScene.csb"); addChild(rootNode); login = dynamic_cast(seekFro

大神求救啊!怎么用vc编译CRYENGINE引擎中武器装备的xml文件????

问题描述 大神求救啊!怎么用vc编译CRYENGINE引擎中武器装备的xml文件???? 毕业设计做不出来,求救啊,用VC编译cryengine引擎的武器XML文件,但是现在不会,求就大神来解救 解决方案 http://tieba.baidu.com/p/3237972288