随笔分类 -  C++

error 2593 operator << 不明确的可能的解决方法
摘要:编译Martinez算法时遇到该问题,提示重载的<<操作符调用不明确。 解决方法为:在cpp文件中将重载的该操作符的实现前添加完整的命名空间路径。 阅读全文
posted @ 2017-06-06 20:48 yeahgis 阅读(1088) 评论(0) 推荐(0) 编辑
C++读取mysql中utf8mb4编码表数据乱码问题及UTF8转GBK编码
摘要:数据库编码为utf8,但是由于某些表的一些字段存储了emoji字符,表采用了utf8mb4编码,默认情况下在C++代码中读出的中文字段值都变成了乱码。 解决方法为,在进行数据库查询前,在C++中执行一下“set names utf8”,例如在我的程序里执行下面的语句即可: 读出数据后,将字符转为本地 阅读全文
posted @ 2016-04-22 18:58 yeahgis 阅读(3513) 评论(1) 推荐(0) 编辑
memset初始化数组的问题
摘要:今天才搞清楚,memset用于初始化数组,仅能初始化为0值,而不能初始化一个特定的值,这怎么能模糊了呢???因此,如果对申请的一段存放数组的内存进行初始化,每个数组元素均初始化为特定的值,必须使用循环遍历来解决。short* pBuffer = (short*)malloc(x_size*sizeof(short));memset(pBuffer, 0x00, x_size*sizeof(short));for (int j=0;j#include int main (){ char str[] = "almost every programmer should know memse 阅读全文
posted @ 2013-12-25 13:42 yeahgis 阅读(7744) 评论(1) 推荐(0) 编辑
CUDA(5.5)与MySQL 5.6的rint函数定义冲突引起的VS编译器C2264错误
摘要:向CUDA project中添加了如下的包含目录后:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;..\include_p;..\include_p\gdal;..\include_p\mysql;..\include;..\include_cg;$(IncludePath)在main.cu中添加如下包含文件:#include #include #include #include #include #include #include "cuda_helloworld_kernel.cu"#in 阅读全文
posted @ 2013-12-23 17:14 yeahgis 阅读(1225) 评论(0) 推荐(0) 编辑
C API向MySQL插入批量数据的快速方法——关于mysql_autocommit
摘要:MySQL默认的数据提交操作模式是自动提交模式(autocommit)。这就表示除非显式地开始一个事务,否则每个查询都被当做一个单独的事务自动执行。我们可以通过设置autocommit的值改变是否是自动提交autocommit模式。查询当前数据库事务提交方式的命令为:mysql> show va... 阅读全文
posted @ 2013-10-21 22:01 yeahgis 阅读(12109) 评论(0) 推荐(2) 编辑
terminate called after throwing an instance of 'std::bad_alloc'
摘要:这个错误,网上搜索到的资料大多是指向内存不足或者内存碎片问题,如下链接http://bbs.csdn.net/topics/330000462http://stackoverflow.com/questions/15671255/c-terminate-called-after-throwing-an-instance-of-stdbad-allochttp://qt-project.org/forums/viewthread/8751我在编写一个并行多边形合并的算法时遇到该问题,导致MPI程序崩溃,反复查看内存占用,没发现内存不足的问题。再次查看各个vector,调用swap释放,再反复查看 阅读全文
posted @ 2013-08-13 22:52 yeahgis 阅读(30603) 评论(0) 推荐(2) 编辑
RaPC(rasterized polygon clipper): A discrete grid-based polygon clipping algorithm
摘要:RaPC(rasterized polygon clipper)-A discrete grid-based polygon clipping algorithmThis algorithm is a part of my Ph.Dthesis and which is still under developing...Some demo results on clipping of convex polygons or concave polygons with holes are here:INTERSECTION:DIFFERENCE: 阅读全文
posted @ 2013-07-18 11:15 yeahgis 阅读(535) 评论(0) 推荐(0) 编辑
error LNK2001: 无法解析的外部符号 _H5T_NATIVE_DOUBLE_g
摘要:最近在编译一个C++动态链接库时遇到一个奇怪的问题,我们基于GsTL实现了GIS地统计分析中的半变异函数分析以及克吕格插值,GsTL在计算半变异函数时依赖HDF5库,当添加了HDF5的头文件、lib以及dll后,编译遇到如下错误:1>Link:1> 正在创建库 ..\lib\gtsta.lib 和对象 ..\lib\gtsta.exp1>gt_rasterinterpolationopimp.obj : error LNK2001: 无法解析的外部符号 _H5T_NATIVE_DOUBLE_g1>..\Release\gtsta.dll : fatal error LN 阅读全文
posted @ 2013-06-17 23:25 yeahgis 阅读(3276) 评论(11) 推荐(0) 编辑
linux下sprintf_s函数的替代
摘要:windows平台下线程安全的格式化字符串函数sprint_s并非标准C函数,因此linux下无法使用,但可以使用snprintf函数代替。/*函数原型:*/int snprintf(char *dest, size_t n, const char *fmt, ...);/*函数说明: 最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n的话,将不会溢出。函数返回值: 若成功则返回存入数组的字符数,若编码出错则返回负值。推荐的用法:*/void f(const char *p){ char buf[11]={0}; snprintf(buf, si... 阅读全文
posted @ 2013-01-22 21:34 yeahgis 阅读(25942) 评论(0) 推荐(1) 编辑
Crashed when delete OGRSpatialReference objects!
摘要:Crashed when delete OGRSpatialReference objects!OGRSpatialReference* oSRS = new OGRSpatialReference();oSRS->SetFromUserInput(constChrPtr);{ ... }delete oSRS;//crashed here!//OSRDestroySpatialReference(oSRS) ;//also crashed!//why?/*Some one say that may be there are defects in the destructor o... 阅读全文
posted @ 2013-01-18 10:56 yeahgis 阅读(435) 评论(0) 推荐(0) 编辑
从4小时到6秒钟,周末就忙了这点事
摘要: 阅读全文
posted @ 2012-12-30 21:51 yeahgis 阅读(267) 评论(0) 推荐(0) 编辑
linux下编译复数类型引发的错误:expected unqualified-id before '(' token
摘要:该类型错误一般由头文件引用顺序的问题引起,默认情况下gcc编译器一般会给出问题出处以及所涉及到的所有的头文件,只需要调整#include <complex>以及引用该头文件的其他文件在报错.cpp文件中的引用顺序即可,一般将该文件或者引用该头文件的头文件置于自定义头文件的前面。 阅读全文
posted @ 2012-12-25 10:28 yeahgis 阅读(28444) 评论(1) 推荐(4) 编辑
no matching function for call to "namespace::class1::foo(class2&)"
摘要:在将windows下的代码移植到linux平台下时遇到该问题,原因是C++编译器规定临时变量不能作为非const的引用传递。如:foo1::(class2& obj){ ...}foo2::(){ ... return foo1(class2::createObj());}在函数foo2中如此调用foo1函数将报错,正确办法是修改foo1参数为const类型或者显式声明临时变量。如:foo1::(const class2& obj){ ...}foo2::(){ ... return foo1(class2::createObj());}//或者foo1::... 阅读全文
posted @ 2012-12-24 18:04 yeahgis 阅读(298) 评论(0) 推荐(0) 编辑
mysql操作数字名称的schema时字符的逃逸问题
摘要:一个简单的问题折腾了好大一会儿,mysql不支持直接操作数字名称的schema,在sql操作时必须做字符逃逸,如:char sql_str[1000];memset(sql_str, 0x0, 1000);sprintf(sql_str, "CREATE TABLE IF NOT EXIST `%s`.`%s`(data_id INT(1), remark VARCHAR(256)) ENGINE MyISAM", schemaName, tableName); 阅读全文
posted @ 2012-11-07 21:24 yeahgis 阅读(459) 评论(0) 推荐(0) 编辑
调用Boost库出现的问题
摘要:网络分析用了boost库实现,引入boost/graph下的一堆hpp,结果导致出错:3类错误出现在concept_check.hpp文件中:error C2143:语法错误:缺少")" (在‘?’的前面)error C2334: “:”的前面有意外标记: 跳过明显的函数体error C2838: "false_" : 成员声明中的非法限定名解决办法:此类错误一般是boost文件引用顺序不正确导致,一般保证在引用其他库的头文件之前先引用boost的头文件即可解决该问题。MARK之~ 阅读全文
posted @ 2012-11-07 21:00 yeahgis 阅读(2493) 评论(0) 推荐(0) 编辑
C#调用CLI封装的非托管C++ DLL报错:未能加载由**.dll导入的过程
摘要:今天需要做一个用C#调用CLI封装的标准C++ DLL的DEMO,以前运行的好好的,结果今天就报出了这个错误:未能加载由**.dll导入的过程。本人也是很长时间没有用C#做这种事情了,在排除路径和dll缓存问题之后,想了半天还应该是底层库出了问题,没办法,把所有非托管的C++dll挨个替换成最新的版本,重新编译执行,一切就OK了,看来该整治一下版本混乱的问题了。 阅读全文
posted @ 2012-10-19 19:17 yeahgis 阅读(4669) 评论(0) 推荐(0) 编辑
VS2010环境与OpenMP远程多线程访问MySQL数据库的限制和困惑
摘要:标准C++代码,打开OpenMP编译选项得到debug/release版本的可执行程序A.exe,A.exe是一个socket监听服务,监听端口port的请求。A接收到请求会创建一个新的线程t去调用B.dll中的算法完成计算任务,并返回线程t的执行时间。B.dll中会有查询MySQL数据的操作,查询分为2种类型:批量查询和单个查询。线程t会执行部分OpenMP代码,OpenMP for循环代码部分包含了向mysql数据库查询单个数据的语句。批量查询得到的数据放在内存中,因此可以被线程t所启动的多个OpenMP线程(我是4核8线程的i7CPU,一般我设置启动8个OpenMP线程,正常情况下... 阅读全文
posted @ 2012-08-03 22:18 yeahgis 阅读(1116) 评论(0) 推荐(0) 编辑
C++生成随机数:Beta分布(beta distribution)
摘要:double cls_random::randomBeta( double alpha, double beta){ /*Johnk's beta generator*/ double u, v; double x, y; do { u=cls_random::randomUniform(); v=cls_random::randomUniform(); x=pow(u,1/alpha); y=pow(v,1/beta); } while (x+y>1); return x/(x+y... 阅读全文
posted @ 2012-07-15 21:17 yeahgis 阅读(3833) 评论(6) 推荐(0) 编辑
C++生成随机数:瑞利(Rayleigh)分布(Rayleigh distribution)
摘要:double cls_random::randomRayleigh(double sigma){ double pv = sigma*sqrt(-2 * log(cls_random::randomUniform())); return pv;}期望:E=方差:V=wiki:http://zh.wikipedia.org/wiki/%E7%91%9E%E5%88%A9%E5%88%86%E5%B8%83 阅读全文
posted @ 2012-07-15 21:14 yeahgis 阅读(2451) 评论(0) 推荐(0) 编辑
C++生成随机数:possion(泊松)分布(possion distribution)
摘要:long cls_random::randomPossion(double lambda){ double x = -1, u; double log1, log2; log1 = 0; log2 = -lambda; do { u = cls_random::randomUniform(); log1 += log(u); x++; }while(log1 >= log2); return x; }期望:E=lambda方差:V=lambdawiki:http://zh.wikipe... 阅读全文
posted @ 2012-07-15 21:12 yeahgis 阅读(7543) 评论(0) 推荐(0) 编辑