精华内容
下载资源
问答
  • MATLAB编译单个或者多个.CPP文件,包括使用OPENCV的编译方法,使用参考博客:https://blog.csdn.net/qq_17783559/article/details/88682663
  • VC++的.cpp文件调用CUDA的.cu文件中的函数
  • 文件main.cpp 文件使用其他文件的函数(方法) ** CLion(编辑工具) new 一个 c++ class 文件(Test)会生成两个文件(Test.h and Test.cpp) .h 头文件 .cpp 源文件 头文件 Test.h 写类的声明(包括类里面的成员和...

    **

    文件main.cpp 文件使用其他文件的函数(方法)

    **

    CLion(编辑工具) new 一个 c++ class 文件(Test)会生成两个文件(Test.h and Test.cpp)
    .h 头文件
    .cpp 源文件

    1. 头文件 Test.h
      写类的声明(包括类里面的成员和方法的声明)、函数原型、#define常数等,但一般来说不写出具体的实现。
    #ifndef CDEMO1_TEST_H
    #define CDEMO1_TEST_H
    
    class Test {
        public: int dispaly();
        private: int num=10;
    };
    
    #endif //CDEMO1_TEST_H
    

    2.源文件 Test.cpp
    源文件主要实现头文件中已经声明的那些函数的具体代码。需要注意的是,开头必须#include一下实现的头文件,以及要用到的头文件。那么当你需要用到自己写的头文件中的类时,只需要#include进来就行了。

    #include<iostream>
    #include "Test.h"
    
    int Test::dispaly() {
        num;
        if (num>3){
            return 56;
        }
    }
    
    1. main.cpp 文件调用Test.h 文件
    #include <iostream>
    #include <stdio.h>
    #include "lbw.com.201911/24/Test.h"
    using namespace std;
    int main()
    {
        void testTest(Test test1); //声明 定义的函数
        void demo_1_caLL_demo2(int s); //声明 定义的函数
        cout << "Hello World" <<endl; // 输出 Hello World
        Test test;
        testTest(test);
        demo_1_caLL_demo2(20); //使用 已经声明且定义过的函数
        return 0;
    }
    
    void testTest(Test test1){
        void testTestDispaly(int num1);
        printf("%d\n",90);
        if (test1.dispaly()>30){
            testTestDispaly(test1.dispaly());
        }
    }
    
    void testTestDispaly(int num1){
    
        for(int s=num1;s < 60;s=s+1){
            cout << "this s is " << s <<endl;
        }
    }
    

    //方法 1 调用方法 2

    void  demo_1_caLL_demo2(int dm){
        void demo_2(); //首先声明函数 下面调用
        if (dm >10){
            demo_2();
        }
    }
    // 方法 2
    void  demo_2(){
        //暑如果被调用输出
        string str = "hello";
        cout <<"outcome is ->>>"<<str <<endl;
    }
    
    展开全文
  • 使用swig&VS2010编译C&Cpp文件成pyd库
  • cpp:cpp文件-源码

    2021-03-15 05:58:24
    cpp:cpp文件
  • 实现 c文件访问cpp文件cpp文件访问c文件
  • 解决方法:Clion中main.cpp调用另一个新建的cpp编译出错一个cpp文件中包含调用另一个cpp文件时出错的原因及解决方法划重点!划重点!解决方法来了!! 一个cpp文件中包含调用另一个cpp文件时出错的原因及解决方法 ##...

    一个cpp文件中包含调用另一个cpp文件时出错的原因及解决方法

    ##下面利用本人最初学习c++时遇到这个问题的例子给大家提供一个解决方法:

    1、main.cpp
    main.cpp代码内容
    2、message.cpp
    在这里插入图片描述
    主要就是实现main.cpp里调用message.cpp里的函数showmessage(),打印出“This is my first c++ code”字样。

    一开始我是在main.cpp里直接引入message.cpp,但是编译时会出现以下错误:
    在这里插入图片描述
    尝试引入头文件也不行,试了好久才发现了一个神奇的解决方案!!
    **

    划重点!划重点!解决方法来了!!

    **
    在main.cpp中删除引用message.cpp,加上extern int showmessage();
    这样子编译就不会出错了,也能够正常运行,打印。
    在这里插入图片描述
    在这里插入图片描述
    extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示变压器遇到此变量和函数时在其他模块中寻找其定义。另外,extern也可用来进行链接指定。有需要的小伙伴可以自行搜索extern的使用噢!

    注意:message.cpp需要放在工程目录下噢

    展开全文
  • 关于如何将多个Cpp文件关联起来

    万次阅读 多人点赞 2019-05-28 19:36:29
    C++程序中,只包含两类文件 —.cpp文件和.h文件。 其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码; 而**.h文件则被称作C++头文件**,里面放的也是C++的源代码。 C+ +语言支持“分别编译”(separate ...

    一、C++编译模式
    C++程序中,只包含两类文件 —.cpp文件和.h文件。
    其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;
    而**.h文件则被称作C++头文件**,里面放的也是C++的源代码。

    C+ +语言支持“分别编译”(separate compilation):
    一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。
    .cpp文件里的东西都是相对独立的,在编译(compile)时不需要与其他文件互通,只需要在编译成目标文件后再与其他的目标文件做一次链接(link)就行了。

    比如,在文件a.cpp中定义 了一个全局函数“void a() {}” ,而在文件b.cpp中需要调用这个函数。
    即使这样,文件a.cpp和文件b.cpp并不需要相互知道对方的存在,而是可以分别地对它们进行编译, 编译成目标文件之后再链接,整个程序就可以运行了。

    这是怎么实现的呢?
    在文件b.cpp中,在调用 “void a()”函数之前,先声明一下这个函数“void a();”,就可以了。
    因为编译器在编译b.cpp的时候会生成一个符号表(symbol table),像“void a()”这样的看不到定义的符号,就会被存放在这个表中。再进行链接的时候,编译器就会在别的目标文件中去寻找这个符号的定义。一旦找到了,程序也就可以顺利地生成了。

    两个概念,一个是定义,一个是声明。
    “定义”就是把一个符号完完整整地描述出来:它是变量还是函数,返回什么类型,需要什么参数等等。
    “声明”则只是声明这个符号的存在,即告诉编译器,这个符号是在其他文件中定义的,我这里先用着,你链接 的时候再到别的地方去找找看它到底是什么吧。

    定义的时候要按C++语法完整地定义一个符号(变量或者函数),而声明的时候就只需要写出这个符号的原型了。
    需要注意的是,一个符号,在整个程序中可以被声明多次,但却要且仅要被定义一次。
    试想,如果一个符号出现了两种不同的定义,编译器该听谁的?

    这种机制给C++程序员们带来了很多好处,同时也引出了一种编写程序的方法。考虑一下,如果有一个很常用的函数“void f() {}”,在整个程序中的许多.cpp文件中都会被调用,那么,我们就只需要在一个文件中定义这个函数,而在其他的文件中声明这个函数就可以了。一个函数还 好对付,声明起来也就一句话。但是,如果函数多了,比如是一大堆的数学函数,有好几百个,那怎么办?能保证每个程序员都可以完完全全地把所有函数的形式都 准确地记下来并写出来吗?
    很显然,答案是不可能。但是有一个很简单地办法,可以帮助程序员们省去记住那么多函数原型的麻烦:我们可以把那几百个函数的声明语句全都先写好,放在一个文件里,等到程序员需要它们的时候,就把这些东西全部copy进他的源代码中。
    这个方法固然可行,但还是太麻烦,而且还显得很笨拙。于是,头文件便可以发挥它的作用了。

    二、什么是头文件
    所谓的头文件,其实它的内容跟.cpp文件中的内容是一样的,都是 C++的源代码。但头文件不用被编译。我们把所有的函数声明全部放进一个头文件中,当某一个.cpp源文件需要它们时,它们就可以通过一个宏命令 “#include”包含进这个.cpp文件中,从而把它们的内容合并到.cpp文件中去。当.cpp文件被编译时,这些被包含进去的.h文件的作用便发 挥了。
    举一个例子吧,假设所有的数学函数只有两个:f1和f2,那么我们把它们的定义放在math.cpp里:

    /* math.cpp */
    double f1()
    {
        //do something here....
        return;
    }
    double f2(double a)
    {
        //do something here...
        return a * a;
    }
    /* end of math.cpp */
    

    并把这些函数的声明放在一个头文件math.h中:

    /* math.h */
    double f1();
    double f2(double);
    /* end of math.h */
    

    在另一个文件main.cpp中,我要调用这两个函数,那么就只需要把头文件包含进来:

    /* main.cpp */
    #include "math.h"
    main()
    {
        int number1 = f1();
        int number2 = f2(number1);
    }
    /* end of main.cpp */
    

    这样,便是一个完整的程序了。需要注意的是,.h文件不用写在编译器的命令之后,但它必须要在编译器找得到的地方(比如跟main.cpp在一个目录下)。 main.cpp和math.cpp都可以分别通过编译,生成main.o和math.o,然后再把这两个目标文件进行链接,程序就可以运行了。

    三、#include
    #include 是一个来自C语言的宏命令,它在编译器进行编译之前,即在预编译的时候就会起作用。#include的作用是把它后面所写的那个文件的内容,完完整整地、 一字不改地包含到当前的文件中来。值得一提的是,它本身是没有其它任何作用与副功能的,它的作用就是把每一个它出现的地方,替换成它后面所写的那个文件的内容。简单的文本替换,别无其他。因此,main.cpp文件中的第一句(#include “math.h”),在编译之前就会被替换成math.h文件的内容。即在编译过程将要开始的时候,main.cpp的内容已经发生了改变:

    /* ~main.cpp */
    double f1();
    double f2(double);
    main()
    {
        int number1 = f1();
        int number2 = f2(number1);
    }
    /* end of ~main.cpp */
    

    不多不少,刚刚好。同理可知,如果我们除了main.cpp以外,还有其他的很多.cpp文件也用到了f1和f2函数的话,那么它们也通通只需要在使用这两个函数前写上一句#include "math.h"就行了。

    四、头文件中应该写什么
    通过上面的讨论,我们可以了解到,头文件的作用就是被其他的.cpp包含进去的。它们本身并不参与编译,但实际上,它们的内容却在多个.cpp文件中得到了 编译。通过“定义只能有一次”的规则,我们很容易可以得出,头文件中应该只放变量和函数的声明,而不能放它们的定义。因为一个头文件的内容实际上是会被引 入到多个不同的.cpp文件中的,并且它们都会被编译。放声明当然没事,如果放了定义,那么也就相当于在多个文件中出现了对于一个符号(变量或函数)的定义,纵然这些定义都是相同的,但对于编译器来说,这样做不合法。

    所以,应该记住的一点就是,.h头文件中,只能存在变量或者函数的声明, 而不要放定义。即,只能在头文件中写形如:extern int a;void f();的句子。这些才是声明。如果写上int a;或者void f() {}这样的句子,那么一旦这个头文件被两个或两个以上的.cpp文件包含的话,编译器会立马报错。(关于extern,前面有讨论过,这里不再讨论定义跟 声明的区别了。)
    但是,这个规则是有三个例外的。

    完整步骤:
    File => New => Project => Console Application 在路径下创建一个名为test的项目

    Project => Add File 将main.cpp / math.cpp / math.h 加入到同一个项目中
    在这里插入图片描述
    在这里插入图片描述

    各个文件应该怎么写:
    main.cpp:
    在这里插入图片描述
    math.cpp:
    在这里插入图片描述
    math.cpp:
    在这里插入图片描述

    展开全文
  • cpp文件封装成 so 文件并调用

    千次阅读 2019-03-05 23:13:17
    本篇记录下将 Cpp文件打包成so 文件,并在其他cpp文件中作调用 二、将cpp文件编译为so文件 在文件夹 cpp1 下创建a.h a.cpp b.h b.cpp 如下: //a.h #ifndef A_H_ #define A_H_ #include "b.h" class ...

    一、前言

        本篇记录下将 Cpp文件打包成so 文件,并在其他cpp文件中作调用

    二、将cpp文件编译为so文件

    在文件夹 cpp1 下创建a.h a.cpp b.h b.cpp 如下:

    //a.h
    #ifndef A_H_
    #define A_H_
     
    #include "b.h"
     
    class A
    {
      public:
        A(){}
        ~A(){}
     
        void showImg(char* path);
     
    };
     
    #endif
    //a.cpp
    #include "a.h"
     
    void A::showImg(char* path)
    {
        B b;
        b.showImg(path);
    }
    //b.h
    #ifndef B_H_
    #define B_H_
     
    #include "opencv2/core/core.hpp"
    #include "opencv2/highgui/highgui.hpp"
     
    class B
    {
      public:
        void showImg(char* path);
    };
     
    #endif
    //b.cpp
    #include "b.h"
     
    void B::showImg(char* path)
    {
        cv::Mat img = cv::imread(path);
        cv::imshow("Img",img);
        cv::waitKey(0);
    }
    编译出个so文件,将a.h a.cpp 编译出so 文件

    sudo g++ -fpic -shared -o libA.so a.cpp b.cpp -I /usr/local/include -L /usr/local/lib -lopencv_core -lopencv_highgui
    四、调用libA.so 文件

    在文件夹 cpp2 下创建main.cpp如下:
    //main.cpp
    #include "a.h"
     
    int main()
    {
        char *path =(char*) "zxy.jpg";
        A a;
        a.showImg(path);
        return 0;
    }
    编译该main.cpp

    一、前言

        本篇记录下将 Cpp文件打包成so 文件,并在其他cpp文件中作调用

    二、将cpp文件编译为so文件

    在文件夹 cpp1 下创建a.h a.cpp b.h b.cpp 如下:

    //a.h
    #ifndef A_H_
    #define A_H_
     
    #include "b.h"
     
    class A
    {
      public:
        A(){}
        ~A(){}
     
        void showImg(char* path);
     
    };
     
    #endif
    //a.cpp
    #include "a.h"
     
    void A::showImg(char* path)
    {
        B b;
        b.showImg(path);
    }
    //b.h
    #ifndef B_H_
    #define B_H_
     
    #include "opencv2/core/core.hpp"
    #include "opencv2/highgui/highgui.hpp"
     
    class B
    {
      public:
        void showImg(char* path);
    };
     
    #endif
    //b.cpp
    #include "b.h"
     
    void B::showImg(char* path)
    {
        cv::Mat img = cv::imread(path);
        cv::imshow("Img",img);
        cv::waitKey(0);
    }
    编译出个so文件,将a.h a.cpp 编译出so 文件

    sudo g++ -o main main.cpp -I ../cpp1/ -L ../cpp1/ -I /usr/local/include -L /usr/local/lib -lopencv_core -lopencv_highgui -lA
    四、调用libA.so 文件

    在文件夹 cpp2 下创建main.cpp如下:
    //main.cpp
    #include "a.h"
     
    int main()
    {
        char *path =(char*) "zxy.jpg";
        A a;
        a.showImg(path);
        return 0;
    }
    编译该main.cpp

    sudo g++ -fpic -shared -o libA.so a.cpp b.cpp -I /usr/local/include -L /usr/local/lib -lopencv_core -lopencv_highgui

    执行./main

    出现./main: error while loading shared libraries: libA.so: cannot open shared object file: No such file or directory

    找不到动态库,执行

    export LD_LIBRARY_PATH=/home/zjy/testCpp/cpp1:$LD_LIBRARY_PATH,

    运行./main,运行结果为:


     

    执行./main

    出现./main: error while loading shared libraries: libA.so: cannot open shared object file: No such file or directory

    找不到动态库,执行

    export LD_LIBRARY_PATH=/home/zjy/testCpp/cpp1:$LD_LIBRARY_PATH,

    运行./main,运行结果为:


     

    展开全文
  • VS2019怎么运行cpp文件

    千次阅读 2020-12-29 21:46:09
    在cmd中输入 call “C:\Program Files (x86)\...输入要运行的forCircle.cpp文件路径 cl D:\C++\lianxi\Progamming\forCircle.cpp 1 运行输入 start cmd /k forCircle 1 运行窗口 文章最后发布于: 2020-09-08 ...
  • .cpp文件转换为.exe文件过程(C++)

    千次阅读 多人点赞 2021-05-03 20:28:42
    下面来简述一下C++.cpp文件转换为.exe文件的过程。 我们知道当我们用C++编译器编辑一个文件时,这个文件就是一个扩展名为.c或.cpp文件,而当我们进行编译运行之后,编译器会为我们自动生成一个扩展名为.exe文件。...
  • 最近在做一个需求,需要把c++写好的方法封装成...首先引入就是把cpp文件add到项目里,通过#include “”来引入头文件,先别急,这里还要说另外一个东西,因为引入cpp文件不能直接调用里面的方法,所以这里要说一个新...
  • C++ 在一个cpp文件中 使用另一个cpp文件中定义的函数建立一个console项目头文件cpp文件main.cpp 建立一个console项目 以dev为例,在【文件】【新建】【项目】,新建一个console项目。 头文件 添加新文件,输入说要...
  • C++的.cpp文件运行全过程

    千次阅读 2021-02-18 21:19:37
    今天来写一写.cpp文件是怎么一步一步变成.exe文件的,以便更好的理解C++内核 第一步 先用编辑器编辑好源代码文件,也就是.cpp文件 int main() {} 然后是对该文件进行预处理,也就是常用的三个预处理命令(此三者...
  • 来源链接:...只需要将调用的.c/.cpp函数放到args里面就行了,包含main的不用放进去,而且需要注意,需要将这些文件与.vscode放在同一级的目录下,再有效。 ...
  • C++——如何理解.h文件和.cpp文件

    千次阅读 2019-01-15 10:49:11
    建立一个以类为名字的XX.h文件,声明类,再建立一个相同名字的XX.cpp文件(要#include “XX.h”),实现类中的函数, 在有main 函数的.cpp里声明函数,建一个与函数名一样的.cpp文件,实现该函数;并且要 #include ...
  • 在阅读一个较大的解决方案中,对于其他文件夹下的.h和.cpp文件,有时候#include“XXX.h”文件,有时候是#include“XXX.cpp”文件,而且二者还不能更换。下面就好好分析一下他们二者的区别。 ...
  • 使用VS2019编译单个CPP文件并运行

    千次阅读 2020-09-08 08:29:20
    使用VS2019和cmd编译运行单个CPP文件 在cmd中输入 call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat" 显示 输入要运行的forCircle.cpp文件路径 cl D:\C++\...
  • CPP文件读入/字符串处理

    千次阅读 2019-05-31 08:18:55
    文件读入写出 #include<fstream> //用这一个即可 #include<istream> #include<ostream> //写出 ofstream out; out.open("Hello.txt", ios::in|ios::out|ios::binary) ; out.close(); //读入 ...
  • 有时候写代码为了简便,会将一些函数...首先创建一个method.h头文件,声明一个求最大值的函数max(int x,int y),然后再创建一个同名的源文件method.cpp,在该文件中实现函数max(int x,int y)的功能。代码如下: //metho
  • 在linux下使用gcc/g++编译.h .cpp文件

    千次阅读 2020-08-27 09:45:37
    1.gcc编译C源码的四个步骤: 预处理->编译->汇编->链接(test.c test.h => test.i => test.s => test.o => test) ...1)预处理 gcc -E test.c -o test.i ...执行可执行文件test ./t...
  • gcc 如何编译cpp文件

    千次阅读 2020-07-24 17:30:52
    文章目录gcc 如何编译cpp文件啊 gcc 如何编译cpp文件啊 /* hello.c */ #include <iostream> using namespace std; int main() { cout << "hello cpp"<<endl; return 1; }   gcc A.cpp...
  • 使用VC++6.0创建.cpp文件工程

    千次阅读 2021-03-03 18:12:51
    一、提前建好一个空的文件夹,文件名以项目名命名 二、文件—>新建 三、 四、 五、 六、 七、 八、 九、结果
  • .cc文件和.cpp文件有什么区别

    万次阅读 2019-11-07 10:13:21
    从历史上看,C ++源文件的后缀是.C。第一次将C ++移植到文件名不重要的系统时,...不同的用户采用不同的解决方案:.cc, .cpp,.cxx以及其它可能的。今天,在Unix世界之外,它主要是.cpp。Unix似乎.cc更经常使用。 ...
  • vim中,c/cpp文件如何在头文件和.c/.cpp文件中快速的进行跳转   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客,B站昵称为:亓官劼,...
  • C++ 一个.cpp文件调用其他.cpp文件中的函数/变量 a.cpp中定义了某个成员函数/变量 在b.cpp中通过使用extern声明进行共享 (在.h中定义的不可) 参考: 例 讲解
  • C、CPP文件是怎样运行起来的?

    万次阅读 2018-07-04 09:45:45
    C、CPP文件是怎样运行起来的? 这个问题就是编译、运行的问题,在很多面试中都会遇到。(今日头条的研发岗面试题就问到cpp文件是怎样运行起来的?) 在此,详细说明C语言的编译运行过程,CPP参考一下也就很容易...
  • C++中*.h和*.cpp文件的编译

    千次阅读 多人点赞 2019-04-10 16:59:31
    通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码。 C+ +语言支持“分别编译”...
  • 调试后可在debug文件夹下找到exe文件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 479,184
精华内容 191,673
关键字:

cpp文件