小编fee*_*ree的帖子

可以使用cmake设置VC调试选项中的命令参数

当我们使用Visual Studio运行C++程序时,Configuration Properties->Debugging如果程序需要一些参数,我们经常会在内部设置"Command Arguments" .例如,我们可以abc.exe -r 1在命令行中运行,并且为了直接在Visual Studio中运行程序,我们可以用命令填充命令参数 -r 1.所以我的问题是:我们可以用cmake设置默认的命令参数吗?通过这样做,不需要手动设置它们.谢谢.

c++ cmake visual-studio-2010 visual-studio

11
推荐指数
1
解决办法
3554
查看次数

如何为ios应用程序构建和使用C++静态库

我知道如何使用iOS->Framework&Library->Cocoa Touch Static Libraryxcode 4.6 构建一个对象C静态库,在本教程的帮助下,在iOS教程中创建一个静态库是很简单的.但是,我不确定的一件事是如何为io应用程序构建和使用纯C++静态库.为了构建C++静态库,我也使用 iOS->Framework&Library->Cocoa Touch Static Library指南,区别在于我在创建静态库项目时删除所有.h和.m文件,然后将所有C++静态库头文件和实现文件放在项目中.一个非常简单的例子如下:

hello.h

#include <iostream>
void say_hello();
Run Code Online (Sandbox Code Playgroud)

HELLO.CPP

#include "hello.h"

void say_hello()
{
std::cout<<"hello"<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)

它似乎工作,我可以hello.a为iPhone 6.1模拟器构建静态库.下一步是构建一个将调用静态库的应用程序.我构建了一个简单iOS application->Single View Application的iPhone 6.1模拟器,然后尝试调用文件中的 hello.a静态库ViewController.mm(将ViewController.m更改为ViewController.mm,以便它可以调用C++函数),只需使用以下代码:

say_hello();
Run Code Online (Sandbox Code Playgroud)

但是,我收到一条警告和两条错误消息:

警告:

ld: warning: ignoring file hello.a, file was built for archive which is not the architecture being linked (i386): 
Run Code Online (Sandbox Code Playgroud)

错误1:

hello.a
Undefined symbols for architecture i386:
  "say_hello()", referenced from:
      -[ViewController viewDidLoad] in ViewController.o
Run Code Online (Sandbox Code Playgroud)

错误2: …

c++ xcode objective-c static-libraries ios

10
推荐指数
2
解决办法
2万
查看次数

是否有函数来请求std :: set的功能?

因为std::vector,我们可以vector::reserve(n)用来请求矢量容量至少足以包含n个元素.那怎么样std::set?我们是否有类似的功能来保留其能力?我问这个问题是因为有时它是一个请求为std :: set变量分配足够的功能,当它被用作函数的引用参数时,它来自另一个动态库(使用多线程调试(/ MTd)) ).

编辑

一种可能的解决方案可能是使用get_allocator函数:

std::set<float> abc;
    float *p;
    p = abc.get_allocator().allocate(100);
    for(int i=0; i<100; i++)
        abc.insert(abc.end(),i);

    std::set<float>::iterator it = abc.begin();
    std::set<float>::iterator itEnd = abc.end();
    while(it != itEnd)
    {
        std::cout<<(*it)<<std::endl;
        it++;
    }

     abc.get_allocator().deallocate(p,100);
Run Code Online (Sandbox Code Playgroud)

c++ set

10
推荐指数
1
解决办法
3270
查看次数

如何在没有内存操作的情况下在C++和STL中定义2D数组?

有几种方法可以在没有内存操作的情况下在C++和STL中定义2D数组,以下代码说明了两种不同的方法:

int main () 
{
    /**************
        1   2   3
        4   5   6
    ***************/
    // Method 1
    const int ROW = 2;
    const int COL = 3;
    int array1[ROW][COL];
    for(int i=0; i<ROW; i++)
        for(int j=0; j<COL; j++)
            array1[i][j] = i*COL+j+1;

    // Method 2
    typedef vector<vector<int> > ARRAY; 
    ARRAY array2;
    vector<int> rowvector;
    for(int i=0; i<ROW; i++)
    {
        rowvector.clear();
        for(int j=0; j<COL; j++)
            rowvector.push_back(i*COL+j+1);
        array2.push_back(rowvector);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:还有其他方法来定义2D数组吗?哪一个最有效?谢谢!

c++ arrays stl std stdvector

9
推荐指数
5
解决办法
3万
查看次数

使用Doxygen(C++)的模板类中的typedef

我的问题与如何使用Doxygen在模板类中注释typedef有关.我将举例说明我的问题:

 namespace fundamental
  {
    /**
    * Basic function
    */
    template <typename T>
    class Base
    {
    public:
      T x; ///< x coordinate
      T y; ///< y coordinate
    };
    typedef Base<float> Coordinate; ///< Point coordinate class
  }
Run Code Online (Sandbox Code Playgroud)

使用Doxygen处理上述代码后,我可以获得一个HTML页面来显示类Base的定义.但是,对于typedef类Coordinate,它不会出现在Base的同一页面中.实际上,所有typedef类型都列在基本命名空间页面中,以及此命名空间中的所有类.我想知道是否可以在Base HTML页面中显示Coordinate类.通过这样做,Base和Coordinate之间的链接将变得更加紧密.谢谢!

c++ doxygen

8
推荐指数
1
解决办法
2661
查看次数

为什么我无法将Mac框架文件与CMake链接?

我有一个与MAC中的CMake有关的问题.我确保可执行程序将使用以下代码正确链接框架和库:

link_directories(directory_to_framework_and_libs)
add_executable(program ${FILE_LIST})
target_link_libraries(program framework_name lib1 lib2)
Run Code Online (Sandbox Code Playgroud)

在第一行代码中,我表示可执行程序可以搜索框架和库的位置.在第三行代码中,框架和库将链接到可执行程序.但是,当我使用Xcode 4编译从cmake文件创建的xcode.project时,项目一直在抱怨它无法找到-lframework_name:ld: library not found -lframework_name任何想法都将受到赞赏.

cmake

8
推荐指数
3
解决办法
2万
查看次数

如何使用C++生成符合2D散点图数据的方法

我曾经使用MATLAB,对于我提出的问题,我可以使用p = polyfit(x,y,1)来估算板中散射数据的最佳拟合线.我想知道我可以依赖哪些资源来用C++实现线拟合算法.我知道这个主题有很多算法,对我来说,我希望算法应该快,同​​时它可以在MATLAB中获得相当的polyfit函数精度.

c++ algorithm matlab curve-fitting linear-regression

7
推荐指数
3
解决办法
2万
查看次数

内联类构造函数,以避免vc内存崩溃

C++类构造函数可以内联或不内联.但是,我发现了一个奇怪的情况,只有内联类构造函数可以避免Visual Studio内存崩溃.示例如下:

dll.h

class _declspec(dllexport) Image 
{
    public:
        Image();
        virtual ~Image();
};

class _declspec(dllexport) Testimage:public Image 
{
public:
    Testimage();

    virtual ~Testimage();
};

typedef std::auto_ptr<Testimage> TestimagePtr;
Run Code Online (Sandbox Code Playgroud)

dll.cpp

#include "dll.h"
#include <assert.h>


Image::~Image()
{
            std::cout<<"Image is being deleted."<<std::endl;
}
Image::Image()
{
}

Testimage::Testimage()
{

}

Testimage::~Testimage()
{
        std::cout<<"Geoimage is being deleted."<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)

dll库被编译为动态库,并且它静态链接到C++运行时库(Multi-threaded Debug (/MTd)).运行库的可执行程序如下:

int main()
{
    TestimagePtr my_img(new Testimage());
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

可执行程序将调用dll库,它还静态链接运行时库.我遇到的问题是,在运行可执行程序时,会出现以下错误消息: 在此输入图像描述

但是,当dll中的类构造函数被内联时,以下代码显示:

class _declspec(dllexport) Image 
{
    public:
        Image();
        virtual ~Image();
};

class _declspec(dllexport) Testimage:public Image 
{ …
Run Code Online (Sandbox Code Playgroud)

c++ visual-studio-2010

7
推荐指数
1
解决办法
843
查看次数

cvs由第二个pary独立添加

我对cvs有疑问.当我使用Tortoise CVS的添加功能向CVS添加两个文件时.出现以下错误消息:

cvs add: ' **.cpp' added independently by second party. 
Run Code Online (Sandbox Code Playgroud)

有没有优雅的方法来解决这个问题?谢谢.

cvs

7
推荐指数
1
解决办法
7310
查看次数

如何在CMake中删除"可能无法从目标读取位置属性"错误?

我现在正在尝试在这篇文章中运行一个cmake脚本.使用此脚本,CMake将打印目标的所有属性.但是,当它尝试检索目标的"LOCATION"属性时,会发现以下错误:

The LOCATION property may not be read from target "abc".  Use the target
  name directly with add_custom_command, or use the generator expression
  $<TARGET_FILE>, as appropriate.
Run Code Online (Sandbox Code Playgroud)

然后我尝试打印属性LOCATION,它也不起作用.有任何想法吗?

cmake

7
推荐指数
1
解决办法
2077
查看次数