使用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

http://edn.embarcadero.com/article/21494

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,
即可,如图:

image

[From]C++builder2007安装最新CnPack失败!ILINK32 Error

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*的变量做中转