c++ 读 配置文件,libconfig

https://www.cnblogs.com/kex1n/p/6651258.html

此开源库需要自己下源文件并编译, 作者提供了vs2008 的 sln ,  本机 vs2012试过可编译

仿照做一个简单的读取配置文件程序

 

 

配置文件 :

 

注意如果要 config_setting_lookup_float , 数值即使是整数, 也写成带个小数点和0的形式 。

 

centos 内存泄漏调查

起因: 用c++做了一个调用ctp api 的程序, 放在 centos 6 32 位 Linux VPS上 ,

用crontab 定时运行 ,但是, 发现执行过几次之后,内存很快被占完

此后, 停止了这个程序和定时任务 ,把vps的内存从1g 升级为 2g


但是, 即使这样, 2g 内存还是随着时间的推移而逐渐减少 , 如果

reboot, 会恢复, 但这只是暂时的解决方法


在 ventos上执行这个命令:

来源 : https://serverfault.com/questions/257759/something-eats-all-memory-i-suspect-memory-leak-on-some-app-how-to-detect-wha

会发现 前10的内存占用程序有9个是 httpd

c++ 如何调用 python 脚本

环境  vs2102  V11

python 36

代码来源 :   https://www.geeksforgeeks.org/calling-python-from-c-set-1/

例子调用了 math module 的 pow 函数  ,如果想调用自编的 module ‘s function , 见 : http://www.notesoflyang.com/?p=2112   

  • 遇到的问题

a) compile 时找不到 <inttypes.h> , 原因是 : visual studio 不支持 c-99  , 解决方法是自己下载放到 vs 的 include 目录去

https://stackoverflow.com/questions/13266868/ffmpeg-inttypes-h-not-found-error

b) 编译时出现

原因是 :  32位的程序链接的64位 python的lib ,

解决方法: 再装一个32位的python , 本例中,装的是  python 37 — 32位

https://stackoverflow.com/questions/15029519/error-lnk2001-unresolved-external-symbol-imp-py-initmodule4

https://stackoverflow.com/questions/16094343/how-to-embed-python-2-4-in-c-application-using-vs-c-6-0


c)  编译时提示 cannot open file ‘python37_d.lib’

原因是 : 应用程序的配置是 : debug win32  , 所以编译器尝试找 python37_d.lib

解决方法 : 在 include puthon.h 文件时, 这样写 , 绕过编译器自动选择

 

  • 传2个double 参数给 python 某模块函数的写法是

 

  • 如果想传 double数组

 

 

  • 参考文档

https://stackoverflow.com/questions/3286448/calling-a-python-method-from-c-c-and-extracting-its-return-value

调用 python 脚本并取返回值


https://www.geeksforgeeks.org/calling-python-from-c-set-1/

这个教程比较好

 


很详细的教程  , python36 +  visual studio

http://justinwatson.name/2017/03/21/Embedding_Python_in_C++.html

TB 的 timer 是怎么实现的

  • Timer 是一个类, 包含在其他类里面(callleg) , 另有线程(CMCLib)负责所有的timer 实例 , 并把timerout event 发送回timer 所在的类

用 LegId标识 leg的实体 , in file  CTBCMCLib.cpp , 但是  tbcmc_lib.c 并没有源码

visual studio Common macros for build commands and properties

编译时经常能看到 这样的宏 :  $(SolutionDir)$(Configuration)\

在这个网址, 能看到所有宏的详细解释  https://docs.microsoft.com/en-us/cpp/ide/common-macros-for-build-commands-and-properties?view=vs-2017

 

但是, 如果能看到具体的路径, 当然更明确了, 那么, 怎么看到 ?  或者说,怎么把这些变量print 出来 ?

 

方法是: 项目 properties—–>Build Event—-> pre 或者 post build event 都可以 —-> command line —-> edit ——> macro 

就可以看到这些macro 的 name value pair

 

 

how to use gdb on centos machine

  • 以这个程序为例

 

  • 编译 ,注意要带  -g  , 因为是c++ ,所以用 g++, c程序用 gcc

 

  • 启动gdb

 

  • 流程控制

break line number :  在某行下断点   ,centos 显示行号   ctrl + c

run    执行

next 执行一步

c : 执行到完

break

  • gdb 带参数执行 :

来源 : https://stackoverflow.com/questions/6121094/how-do-i-run-a-program-with-commandline-arguments-using-gdb-within-a-bash-script

 

  • 参考文章

http://www.math.bas.bg/~nkirov/2005/netb151/debugging-with-gdb.html

http://kirste.userpage.fu-berlin.de/chemnet/use/info/gdb/gdb_6.html