我在Corba有一些简单的界面:
#ifndef __INTERFFACE_IDL__
#define __INTERFFACE_IDL__
import User.h;
interface Interfface { void fun(in User u); };
#endif
我还有简单的C ++类User.h,其中包含私有字段:firstName,lastName,age和getter以及setter。我使用omniORB,并尝试将我的界面翻译成C ++文件:
omniidl -bcxx interface.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);
};
答案 0 :(得分:2)
import
无效IDL。也许你的意思是#include
?但是你的User.h
文件是用C ++编写的。它需要在IDL中。