标签归档:C++
c调用c++实现
eclipse CDT 配置 cygwin 开发环境
1. 下载安装eclipse cdt 和cygwin
使用Comport出现[ILINK32 Error] Error: Unresolved external ‘__fastcall Cport::TCustomComPort::SetPortA(const System::AnsiString)’
在C++Builder2007里面使用Comport控件(http://comport.sf.net) ,编译的时候出现
[ILINK32 Error] Error: Unresolved external ‘__fastcall Cport::TCustomComPort::SetPortA(const System::AnsiString)’ referenced from D:THERMALPHOTOGUI-NEW-1115-FINAL VERSIONRELEASE_BUILDUNIT1.OBJ
解决办法:
1.修改bdsinclude下面的winspool.h文件
修改前:
BOOL WINAPI SetPortA( IN LPSTR pName, IN LPSTR pPortName, IN DWORD dwLevel, IN LPBYTE pPortInfo ); BOOL WINAPI SetPortW( IN LPWSTR pName, IN LPWSTR pPortName, IN DWORD dwLevel, IN LPBYTE pPortInfo ); #ifdef UNICODE #define SetPort SetPortW #else #define SetPort SetPortA #endif // !UNICODE
修改后,就是添加条件编译#ifndef DONT_USE_WINSPOOL_SETPORTA
#ifndef DONT_USE_WINSPOOL_SETPORTA
BOOL WINAPI SetPortA(
IN LPSTR pName,
IN LPSTR pPortName,
IN DWORD dwLevel,
IN LPBYTE pPortInfo
);
BOOL WINAPI SetPortW(
IN LPWSTR pName,
IN LPWSTR pPortName,
IN DWORD dwLevel,
IN LPBYTE pPortInfo
);
#ifdef UNICODE
#define SetPort SetPortW
#else
#define SetPort SetPortA
#endif // !UNICODE
#endif //!DONT_USE_WINSPOOL_SETPORTA
然后,在bcb的project选项里面,添加条件编译DONT_USE_WINSPOOL_SETPORTA
2.添加定义,当然可直接添加到winspool.h,也可以添加到使用单元前
#define SetPortA SetPort
[参考]http://sourceforge.net/forum/forum.php?thread_id=1363256&forum_id=261327
C++builder2007安装最新CnPack失败!ILINK32 Error
问题:
BCB2007安装cnpack组件包,当安装到 dclCnPack 时出错,编译运行期包我是编译成功的,但就是安装设计期包 时出错了,编译器报的是下边错误
[ILINK32 Error] Error: Unresolved external ‘WSAIoctl’ referenced from F:ANSONCOMPONENTSCNVCLPACKAGESBCB2007RELEASE_BUILDCNUDP.OBJ
解决办法:
需要在BCB的包文件中加入ws2_32.lib的引用,
方法:在project——>options——>linker——>linking页面,右下角的Addictional Options填入ws2_32.lib,
即可,如图:
GSL,C/C++程序员的数值计算库
http://www.gnu.org/software/gsl/
GNU科学库(GSL)是C/C++程序员的数值计算库。它提供大量的数学子程序,领域包括:复数,多项式求根,特殊函数,矢量和矩阵,排序,数列,BLAS支持,线性代数,本征系,快速傅里叶变换,求积分,随机数,准随机序列,随机分布,统计,柱状图,有序n元,蒙特卡洛积分,模拟退火,微分方程,内插,数值插分,Chebyshev近似,级数累加,离散Hankel变换,寻根,最小化,最小二乘拟合,物理常数,IEEE浮点数,离散小波变换,等。
大量科学计算相关链接
CString 在dll结构参数中的问题
一个结构大概如下:
struct MyCarPoint
{
long NaviID;
double _x;
double _y;
CString _CarLocation;
}
在传递_CarLocation进来的变量中,赋值的话,就会引发内存写入错误。
环境是:C#调用C++ 写的dll,传递的参数是 MyCarPoint *pMyCarPoint
解决办法:
在结构中,使用TCHAR* 代替CString
赋值给_CarLocation时,注意先传给一个TCHAR*的变量做中转