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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据