C ++:使用owl编译旧代码

时间:2013-03-12 16:01:50

标签: c++ c++builder owlnext

我正在尝试使用新的Borland C ++ - Builder(Embarcadero Studio XE2)编译旧程序。

我认为这很容易,但我收到了很多错误。例如使用类似somefunction(TPoint(0,0))之类的东西在它期待引用时不起作用,所以我不得不写TPoint t=TPoint(0,0);somefunction(t) ...也有一些错误,比如math.log可以使用double的double但是得到了uint,所以它无法决定...

但主要问题似乎是OWL。我在那里有一个代码行说明了一些与函数参数类型不匹配的内容:

  

DEFINE_RESPONSE_TABLE1(TTSCalibDialog,TDialog)     EV_LVN_ENDLABELEDIT(IDC_CALIBMASSES,MassCol_EndLableEditResp),     EV_COMMAND(IDC_CALIBRATEBUT,CalibrateResp),     EV_COMMAND(IDC_CALIBSAVEBUT,CalibSaveResp),     EV_COMMAND(IDC_CALIBLOADBUT,CalibLoadResp),     EV_COMMAND(IDC_CALIBRESTORE,CalibRestoreResp),     EV_COMMAND(IDC_CALIBSETNUMMASSES,CalibSetNumMassesResp),     EV_WM_DESTROY,// Ev_WM_Destroy END_RESPONSE_TABLE;

该行

EV_LVN_ENDLABELEDIT(IDC_CALIBMASSES, MassCol_EndLableEditResp)

给出错误

  

[BCC32 Fehler] AcMode_TS_Dial.CPP(13):E2285KeineÜbereinstimmungfür   “b_LV_DISPINFO_NOTIFY_Sig(无效   (TTSCalibDialog :: *)(TLvDispInfoNotify&))'gefunden   而第二个参数被声明   void MassCol_EndLableEditResp(TLwDispInfoNotify& nmHdr)
  {MassCol-> EndLableEditResp(NMHDR);};

第一个论点在这里使用似乎也是合法的......

后来有一行使用

  

EV_LVN_ENDLABELEDIT(IDC_SIMWEIGHTCOL,AddCol0_EndLableEditResp),

有相同的错误,所以我认为可能有一个包含或命名空间缺失...

是否有人知道此功能或可能导致错误的原因?

1 个答案:

答案 0 :(得分:1)

过了一段时间,我也在OWLNext论坛上问过,在那里收到正确答案:

http://sourceforge.net/p/owlnext/discussion/97175/thread/a0cc4131/

void TTSCalibDialog::MassCol_EndLableEditResp(TLwDispInfoNotify& nmHdr) 
{MassCol->EndLableEditResp(nmHdr);}

此函数返回void,但是需要bool。更改类型并返回true inside解决了这个问题。

还有一些其他问题,但现在该程序很乐意在XE2-Studio上进行编译。