
C++
文章平均质量分 59
IvanLJF
从事SAR相关算法研究。负责PIE-SAR产品的开发,以及宏图女娲星座地面处理系统的建设。
展开
-
头文件相互包含引起的错误(对类前置声明和包含头文件的理解 )
类的前置声明(forward declaration)和包含头文件(#include)的区别常常会迷惑我们,特别是涉及两个类相互包含的时候。因此我们有必要搞清楚二者的区别以及二者的适用场合。 首先我们需要问一个问题是:为什么两个类不能互相包含头文件?所谓互相包含头文件,我举一个例子:我实现了两个类:图层类CLayer和符号类CSymbol,它们的大致关系是图层里包含有符号,符转载 2013-01-07 21:01:53 · 1401 阅读 · 0 评论 -
无法解析的外部符号 ---一般解决方案
App.obj : error LNK2019: 无法解析的外部符号 _D3DXMatrixPerspectiveFovLH@20,该符号在函数 "public: void __thiscall App::Begin(void)" (?Begin@App@@QAEXXZ) 中被引用App.obj : error LNK2019: 无法解析的外部符号 _D3DXMatrixLookAtLH@16原创 2013-04-03 15:10:11 · 7266 阅读 · 0 评论 -
Opengl---glFlush函数
#include "stdafx.h"#include #include void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT);}void draw_triangle(void){ glBegin (GL_LINE_LOOP); gl原创 2013-04-07 09:16:02 · 5796 阅读 · 0 评论 -
Opengl---gluLookAt函数详解
下面的一段摘自百度百科:视点转换函数原型void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz);该函数定义一个视图矩阵,并与当前矩阵相乘。第原创 2013-04-06 19:03:38 · 99194 阅读 · 17 评论 -
C++矩阵处理工具——Eigen .
Eigen是C++中可以用来调用并进行矩阵计算的一个库,里面封装了一些类,需要的头文件和功能如下: Eigen的配置 Eigen的应用举例:Eigen下载地址Eigen的应用举例:整理的一些常用操作,基本的矩阵运算就在下面了,算是个入门吧~主要分以下几部分:建议大家放到编译环境里去看,因为我这里有一些region的东西,编译器下更方便看~原创 2013-03-27 16:50:18 · 1625 阅读 · 0 评论 -
创建自己的dll和lib文件 .
经常使用到第三方库。比如:glut,freetype,sdl,大一点的有CEGUI,OSG等。这些库虽然是开源的,但是很多时候只是使用他们,一般不会去修改。使用就会涉及到三个东西:.h .lib .dll文件。主要有三种模式:.h+.lib .h+.lib+.dll.dll 第二种是最常见的,其他两种都比较少 一,下面自己实现一个dll转载 2013-04-09 18:37:04 · 1149 阅读 · 0 评论 -
关于#pragma push_macro("new") .
在三方库源码中,我们经常看到这样的代码:#pragma push_macro("new")#undef new// do something with new......#pragma pop_macro("new")它的作用就是将宏定义new压入栈并取消它(指的是宏)的定义,如此一来,new的本来含义便获得了恢复,使用完毕后将宏定义new弹出栈,恢复宏定义。不过,仍有原创 2013-04-11 11:28:08 · 2449 阅读 · 0 评论 -
关于vector对象的insert。
vector向量容器中使用insert()方法,可以在vector对象的任意位置前插入一个新的元素,书上说,insert()方法要求插入的位置,是元素迭代器的位置,而不是元素的下标,刚开始不太明白什么意思,直到看了一个程序后才知道。 #include#includeusing namespace std;int main(){ vector v(3); v[转载 2013-06-15 19:11:53 · 1446 阅读 · 0 评论 -
解读传说中计算π的超牛的C程序 .
在我上大学的时候就流传着这样一个超牛的C程序,只用三行代码就能计算π到小数点后800位,还有的地方开玩笑说是外星人写的,的确是牛的不得了。那个时候大家一起研究都搞不懂,昨天看了一篇文章解释这段代码,今天自己试验了很久,终于弄明白了,所以记下来和大家一起交流。这段C代码是这样的:#include "stdio.h"long a=10000, b, c=2800, d, e, f[2801转载 2013-06-16 20:06:55 · 2435 阅读 · 0 评论 -
基于GDAL计算NDVI
// NDVI.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"//#include "gdal_priv.h"#include "gdal.h"void CalcNDVI(int rows, int cols, float* nir, float* red, float* ndvi){ int n = rows*col原创 2013-06-16 20:39:57 · 5430 阅读 · 3 评论 -
VS2010生成静态库(.lib)
打开VS2010,新建一个项目,选择win32项目,点击确定,选择静态库这个选项,预编译头文件不选。在这个空项目中,添加一个.h文件和一个.cpp文件。名字我们起为static.h和static.cppstatic.h文件:#ifndef LIB_H#define LIB_H extern "C" int sum(int a,int b); extern "C" int原创 2013-06-17 18:37:46 · 6354 阅读 · 4 评论 -
C++ explicit关键字应用方法详解
C++编程语言中有很多比较重要的关键字在实际编程中起着非常重要的作用。我们今天为大家介绍的C++ explicit关键字就是其中一个应用比较频繁的关键字。下面就让我们一起来看看这方面的知识吧。C++ explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?如果c++类的构造函数有一个参数,那么在编译的时候就会原创 2013-06-18 09:55:14 · 1303 阅读 · 0 评论 -
如何使用GDAL重采样图像 .
在编写重采样图像时,可以使用GDAL来读写图像,然后自己编写重采样算法(最邻近像元法,双线性内插法,三次立方卷积法等)【关于这采样算法有时间我会单独写一篇文章来说明原理的】将计算的结果写入图像中来实现。 在GDAL的算法中,已经提供了五种重采样算法,其定义如下(位置gdalwarper.h 的46行):/*! Warp Resampling Algorithm */typedef转载 2013-07-02 17:58:39 · 2877 阅读 · 0 评论 -
GDAL读写shp文件
原文网址:http://www.189works.com/article-18614-1.htmlGDAL读shp文件(1) 注册所有的文件格式驱动1 GDALAllRegister();2 OGRRegisterAll();(2)得到shp文件的处理器1 OGRSFDriver* poDriver = Registrar::GetRegistrar()->GetDrive转载 2013-07-25 14:00:22 · 4804 阅读 · 0 评论 -
GDAL/OGR创建DXF文件中多图层的方法 .
有人认为新建多个OGRLayer就可以将类别分开,这种观点是错误的,OGRLayer和DXF中的图层不是一个概念。在写DXF文件时,不支持创建多个ORGLayer图层,一个OGRDXFWriterDS对应一个OGRDXFWriterLayer在new OGRDXFWriterLayer时,OGRDXFWriterLayer构造函数中,会创建DXF标准字段也就是OGRFieldDefn,DXF不转载 2013-06-26 13:54:23 · 2595 阅读 · 0 评论 -
用GDAL/OGR去读shapefile
一、读shapefile1、首先,用Arcgis创建所要读的shp文件。打开ArcCatalog,右键NEW->Shapefile,名称Name:point ,要素类型(Feature Type):Point。点击Edit,选择投影类型。2、打开ArcMap. 单击工具栏里的Add data按钮,打开刚才创建的point.shp文件。3、添加5个点要素,并添加字段(添加字段要在非编辑模原创 2013-07-26 14:27:53 · 3112 阅读 · 0 评论 -
gdalinfo 工具读取图像信息
命令行:(列出了栅格数据的信息)1、gdalinfo srtm_51_02.tif (文件放在了gdal编译好的库bin目录下,所以直接跟文件名即可,不需路径)2、gdalinfo -mm srtm_51_03.tif (获取数据的最大值最小时)3、gdalinfo -stats srtm_51_03.tif (影像的统计信息如:最大值,最小值,均值,方差)原创 2013-07-28 20:43:06 · 3744 阅读 · 0 评论 -
gdal 工具创建金字塔
http://www.gdal.org/gdaladdo.html创建一个金字塔,嵌入到原文件中。gdaladdo -r average strm_51_02.tif 2 4 8 16原创 2013-07-28 15:26:08 · 2886 阅读 · 0 评论 -
C++、GDAL创建shapefile文件
一、先贴出第一段代码: #include "ogrsf_frmts.h"#include using namespace std;int main(){ const char *pszDriverName = "ESRI Shapefile"; OGRSFDriver *poDriver; OGRRegisterAll(); poDriver = O原创 2013-07-29 18:47:40 · 4842 阅读 · 0 评论 -
关于GDAL计算图像坐标的几个问题
-博客文摘 站长源码下载 软件下载 单机游戏 电驴下载 快车下载 手机影视 在线漫画 在线期刊 读书房产 佛缘 股票 户外 花嫁 家居 健康 教育 军事 科技 旅游 媒体 美女 美食 名利场 女人 评论 汽车 亲子 情感 尚品 社会 摄影 生活 时尚 视觉 收藏 思想 体育 图片 文史 文学转载 2013-07-02 17:00:42 · 5336 阅读 · 1 评论 -
GDAL 栅格数据转矢量数据
将分类后的图进行矢量化,将栅格数据转为矢量(shape文件)原创 2013-07-25 16:25:34 · 8858 阅读 · 2 评论 -
出现“error c4430缺少类型说明符-假定为int。注意C++不支持默认int
出现“error c4430缺少类型说明符-假定为int。注意C++不支持默认int: 出现这种错误的原因,是因为函数没有写返回值。是在VC6.0的工程转为高版本(VS2010)的时候经常出现的;#include main(){ printf("hello,world\n");}上面的代码在VC6.0中编译没错,但在VS2010编译出错,因为主函数没有返回值,加上原创 2013-08-11 15:26:26 · 9608 阅读 · 1 评论 -
在用C读雷达数据时,常用的函数strncpy,sscanf
strncpy的用法:摘自百度百科:原型:char * strncpy(char *dest, char *src,size_tnum);功能:(c/c++)复制src中的内容(字符,数字、汉字....)到dest,复制多少由num的值决定,返回指向dest的指针。如果遇到null字符('\0'),且还没有到num个字符时,就用(num - n)(n是遇到null字符前已经有的非nul原创 2013-08-15 16:45:03 · 1287 阅读 · 0 评论 -
VS2010中如何查看DLL的导出接口
看《VC++动态链接库(DLL)编程深入浅出》时,里面提到使用Visual C++的Depends工具可以查看动态链接库中的导出接口。对于VC6.0,VC所带的Depends软件,在VC6安装目录下的tools文件夹里面,可以直接运行。但是VS2010中没有了Depends工具,如何查看DLL文件的导出接口呢? 解决方法:(方法来源)1. 打开命令行窗口2. 运行vcvarsall.b转载 2013-10-29 08:51:43 · 1816 阅读 · 0 评论 -
Linux 下的编程工具 .
Linux 中最重要的软件开发工具是 GCC。GCC 是 GNU 的 C 和 C++ 编译器。实际上, GCC 能够编译三种语言:C、C++ 和 Object C(C 语言的一种面向对象扩展)。利用 gcc 命 令可同时编译并连接 C 和 C++ 源程序。 一、 GCC 基本使用 利用 GCC 编译并连接少数几个 C 源文件是简单的。假设读者的一个程序只有一个源 文件 hello.c,其内原创 2014-01-08 20:19:08 · 1104 阅读 · 0 评论 -
win7 64位操作系统为acess数据库配置ODBC数据源 .
打开控制面板——系统和安全——管理工具,找到数据源(ODBC),点击添加,发现没有acess数据库的驱动程序。如下图: 经过上网搜寻一番,得出结论:Win7 x64管理工具下默认的ODBC数据源配置程序(%SystemRoot%\system32\odbcad32.exe)是64位的驱动管理,而我的office程序为32位,因此,它的驱动不是在system32文件夹下。在转载 2014-09-20 16:56:24 · 1543 阅读 · 0 评论 -
Visual Assist过期解决方法
Visual Assist试用期过了后,不管怎么装,或者是找网上的KEY都不行,所以试了一下的方法,成功了:资源下载地址:Visual Assist下载后双击安装,安装在默认目录,将下载的文件夹下的VA_X.dll文件放到以下目录,覆盖原有文件win7目录:C:\Users\lu\AppData\Local\Microsoft\VisualStudio\10.0\Extensions\原创 2015-02-28 17:03:55 · 3838 阅读 · 1 评论 -
VS2010下编译sqlite3
首先下载源码,SQLITE中第一个下载文件就是,下载sqlite-amalgamation-3081101.zip,当前版本是3.8.11,里面包含了四个文件,sqllite3.h、sqlite3.c、sqllite3ext.h、shell.c,shell.c暂时不用,由于源码中没有包含def文件,所幸其dll版本中包含了def文件,所以需要下载dll压缩包,下载地址和源码在同一个页面上,下载sql转载 2015-08-18 22:26:13 · 2360 阅读 · 0 评论 -
在Windows下编译iconv
iconv基于GPL公开源代码,是GNU项目的一部分,在各种Unix-like操作系统下很容易编译和使用,而在Windows下编译iconv就没那么简单了。最新版的iconv(目前是libiconv-1.14.tar.gz)已经不再提供Visual C++的编译文件,最后一个支持VC编译的iconv版本是libiconv-1.11.1.tar.gz。虽然不是最新版,但是在Windo转载 2015-08-18 23:12:21 · 2652 阅读 · 2 评论 -
vs2010编译配置boost
1.下载安装包boost_1_53_0,下载windows版本。http://www.boost.org/users/history/version_1_53_0.html2.解压缩到d:\boost目录下3.编译bjam (1)从vs2010的工具菜单进入命令提示窗口(单击“开始”按钮,指向“所有程序”,指向“Microsoft Vis l St转载 2015-08-24 22:33:58 · 747 阅读 · 0 评论 -
linux下automake用法
原文地址:http://www.cppblog.com/gezidan/archive/2011/08/08/152772.html作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了。 在本转载 2015-08-27 22:07:51 · 599 阅读 · 0 评论 -
VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径
说明$(RemoteMachine)设置为“调试”属性页上“远程计算机”属性的值。有关更多信息,请参见更改用于 C/C++ 调试配置的项目设置。$(References)以分号分隔的引用列表被添加到项目中。$(ConfigurationName)当前项目配置的名称(例如“Debug”)。$(PlatformName)当前项目平台的名称转载 2015-08-05 20:46:57 · 512 阅读 · 0 评论 -
GDAL库调试(包括跨语言调试)
很多时候都需要调试GDAL库,尤其是像学习GDAL库中的某些算法是如何实现的时候,调试就必不可少了。首先说明用C++的调试。以VS2008为例进行说明。编译DEBUG版本的GDAL库,这个可以参考我之前的博客。可以用命令行编译,也可以用IDE编译,但是实质都是一样,修改nmake命令的参数。也就是给nmake命令后加一句DEBUG=1即可。编译完成之后,应该会在转载 2015-08-05 21:12:12 · 919 阅读 · 0 评论 -
SQLITE3 使用总结
前序:Sqlite3 的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。这些天再次研究它,又有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记。这里要注明,我是一个跨平台专注者,并不喜欢只用 windows 平台。我以前的工作就是为 unix 平台写代码。下面我所写的东西,虽然没有验证,但是我已尽量不使用任何 windows 的东西,只使用标准 C 或标准C+转载 2015-08-22 21:32:59 · 987 阅读 · 0 评论 -
sqlite3使用示例
// Sqlite3_Test.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "sqlite3.h"static int callback(void *NotUsed, int argc, char **argv, char **azColName){ int i; for(i=0; i<argc; i++) { pr转载 2015-08-22 20:42:03 · 964 阅读 · 0 评论 -
Ubuntu 中安装低版本的gcc/g++
ubuntu 12.04 中带的Gcc/G++都是4.6了,我们把系统默认的降级到4.4$sudo apt-get install gcc-4.4$sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 40 (这里“40” 是优先级,值越大优先级越高)$sudo update-转载 2014-08-02 12:59:04 · 2125 阅读 · 0 评论 -
c++ Primer 中文版 第五版 编译
c++ Primer 中文版 第五版 编译:原创 2016-12-25 17:16:35 · 565 阅读 · 0 评论 -
编译依赖于LAPACK、ATLAS的NUMPY
1.LAPACK — Linear Algebra PACKage:http://www.netlib.org/lapack/2.Automatically Tuned Linear Algebra Software (ATLAS)http://math-atlas.sourceforge.net/https://sourceforge.net/projects/math-atlas/files/A原创 2017-01-05 13:24:28 · 1845 阅读 · 0 评论 -
安装OpenBlas(ubuntu 14.04)
在使用deeplearning4j进行开发时,为了确保native libs 在后台正确运行,需要使用OpenBLAS中libs。请检查在机器上OpenBLAS是否已经安装。若已经安装,则需要将执行下面命令(假设OpenBLAS安装在/opt下):ln -s /opt/OpenBLAS/lib/libopenblas.so /usr/lib/libblas.so.3ln -s /opt/OpenBL转载 2017-03-02 09:05:27 · 3507 阅读 · 0 评论