1

Corba にはいくつかの単純なインターフェイスがあります。

#ifndef __INTERFFACE_IDL__
#define __INTERFFACE_IDL__

import User.h;

interface Interfface {  void fun(in User u); };

#endif

また、プライベート フィールドを持つ単純な C++ クラス User.h もあります: firstName、lastName、age、およびゲッターとセッター。私は omniORB を使用し、インターフェースを C++ ファイルに変換してみます:

    omn​​iidl -bcxx インターフェイス.idl

しかし、それは私にそれらのエラーを与えます:

omniidl -bcxx interface.idl
interface.idl:4: Syntax error in definition
interface.idl:4: Syntax error in abstract valuetype
interface.idl:8: Error in look-up of 'User': 'User' not found
omniidl: 3 errors.

User.h は、interface.idl と同じフォルダーにあります。どうしたの?

このコード:

#ifndef __INTERFFACE_IDL__
#define __INTERFFACE_IDL__

**import test/User.h;**

interface Interfface {  void fun(in User u); };

#endif

同じエラーが発生します...

編集:

私の User.h ファイル:

#include <string>
using std::string;

class User
{
    private :
            string firstName;
            string lastName;
            int age;
    public :
            string getFirstName();
            string getLastName();
            int getAge();
            void setFirstName(string);
            void setLastName(string);
            void setAge(int);
};
4

1 に答える 1

2

importは有効な IDL ではありません。おそらくあなたは意味しました#includeか?しかし、User.hファイルは C++ です。IDL である必要があります。

于 2012-07-28T23:14:33.327 に答える