【问题标题】:C++: recompiling old code using owlC++:使用 owl 重新编译旧代码
【发布时间】:2013-03-12 16:01:49
【问题描述】:

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

我认为这很容易,但我遇到了很多错误。例如使用somefunction(TPoint(0,0))之类的东西在需要引用时不起作用,所以我不得不写@ 987654322@ ...还有一些像math.log这样的错误可以使用double of float但得到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): E2285 Keine Übereinstimmung für 'b_LV_DISPINFO_NOTIFY_Sig(无效 (TTSCalibDialog::*)(TLvDispInfoNotify &))' gefunden 而第二个参数被声明 void MassCol_EndLableEditResp(TLwDispInfoNotify& nmHdr)
{MassCol->EndLableEditResp(nmHdr);};

第一个参数似乎也可以在这里使用...

后来有一条线用到了

EV_LVN_ENDLABELEDIT(IDC_SIMWEIGHTCOL,AddCol0_EndLableEditResp),

同样的错误,所以我认为可能缺少包含或命名空间...

有谁知道这个功能或者什么会导致错误?

【问题讨论】:

  • 只是好奇 - 你解决了这个问题吗?我从您的另一篇文章中看到您正在使用 OWLNext
  • @Jogy 啊,我忘了回答这个问题。我在 owlNext-forum 上得到了帮助,告诉我我使用的是 wrog 返回类型。详细请看下面的答案^^

标签: c++ c++builder owlnext


【解决方案1】:

一段时间后,我也在 OWLNext-Forum 上提问,在那里得到了正确答案:

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

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

此函数返回 void,但是,bool 是必需的。更改类型并在内部返回 true 解决了这个问题。

还有一些其他问题,但现在程序可以在 XE2-Studio 上顺利编译。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多