在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