1

私は自分のpowerbuilderプロジェクトをorcaapiを使用してEAServerにデプロイしようとしています。しかし、エラー-21 PBORCA_CBBUILDERROR(展開がエラーで失敗しました)を取得しています。また、コールバック関数(BuildErrProc)が呼び出されていません。どうすればこの問題を克服できますか?ところで、私はWindowsXP-32ビット、Powerbuilder 11.2、EAServer 5.5、QT-4.8.0オープンソースvs2010を使用しています。

void __stdcall BuildErrProc(LPVOID lpUserData) {
  PPBORCA_BLDERR blderr = (PPBORCA_BLDERR)lpUserData;
  QString s;
  s = QString::fromStdWString(blderr->lpszMessageText);
  QMessageBox::information(0,"",s);
}

int WINAPI BuildProject(QString currentApplLibName,QString currentApplName,QString projectLibName,QString projectName,QStringList libraryNames)
{
  PBORCA_BLDPROC fpBuildErrProc;
  PPBORCA_BLDERR pBldErrData;
  fpBuildErrProc = (PBORCA_BLDPROC) BuildErrProc;
  pBldErrData = (PPBORCA_BLDERR) new PBORCA_BLDERR;
  memset(pBldErrData, 0x00, sizeof(PBORCA_BLDERR));

  HPBORCA hORCASession;
  hORCASession = SessionOpen();
  printf("Setting library list..\n");    
  LPTSTR* pLibNames = new LPTSTR[libraryNames.size()];
  for(int i=0;i<libraryNames.size();i++) {
      pLibNames[i]=(LPTSTR)libraryNames.at(i).utf16();
  }
  int r = PBORCA_SessionSetLibraryList(hORCASession, pLibNames, libraryNames.size());
  if(r==0) {
      printf("Library list OK.\n");
      QMessageBox::information(0,"",currentApplName);
      r = PBORCA_SessionSetCurrentAppl(hORCASession,(LPTSTR)currentApplLibName.utf16(),(LPTSTR)currentApplName.utf16());
      if(r==0) {
          printf("Setting current appl OK.\n");         
          r = PBORCA_BuildProject(hORCASession,(LPTSTR)projectLibName.utf16(),(LPTSTR)projectName.utf16(),fpBuildErrProc,pBldErrData);
          if (r==0) {
              printf("Building current prj OK.\n");
          } else {
              printf("Build FAILURE:%d\n",r);
          }
      } else {
          printf("Current appl FAILURE.\n");
      }
  } else {
      printf("Library list FAILURE:%d\n",r);
  }
  SessionClose(hORCASession);
  return r;
}
4

1 に答える 1

0

私はそれを解決しました。ライブラリリストが間違っていました。正しいlibリストを設定すると、プロジェクトが正常にビルドされました。

于 2012-02-13T12:26:56.193 に答える