C++ Builder :E2040 Declaration terminated incorrectly 错误

今把一个项目从C++ Builder 6迁移到 C++Builder 2007时,编译时出现该问题

虽然有个控件是有改动,但是报错的都是标准的控件,如groupbox,edit等,另发现,报错的好像都是修改过name属性的,就是跟用组件前缀修改过的一样的名字:如grp1,edt1,edt2等,好像这样的名字,都会报错。

解决办法:

把报错所在行的控件的名字都修改了,保存。

重新编译即可。

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