それぞれが実装する2つのWindowsサービスを実装しようとしていますが、それぞれが独自のgSoapインターフェースであり、両方とも各インターフェースのクライアントとサーバーです。したがって、私の問題は、両方のインターフェイス (メンバーを持つクラス) で同じデータ型を使用し、2 つの異なる名前空間を作成する soapcpp2.exe -q オプションを使用して C++ コードを生成することです。これは問題なく動作しますが、問題は名前空間の分離により、両方のインターフェイスで等しいはずのデータ型が異なるようになりましたが、名前空間を削除すると、共有データ型が両方のインターフェイスで同じ名前を持つため、競合が発生します。
"問題:
interface 1:
---
>class xsd__Address
{
char *email;
char *url;
};
>int ns1__getAddress(xsd__Address& ret);
---
interface 2:
---
>class xsd__Address
{
char *email;
char *url;
};
>int ns2__setAddress(xsd__Address& ret);
---
各ヘッダーを定義した後、soapcpp2.exe で次のようにコンパイルします。
soapcpp2.exe -qintf1 -n xxxx //インターフェイス 1 の場合
soapcpp2.exe -qintf2 -n xxxx //インターフェイス 2 の場合
したがって、両方のインターフェイス (インターフェイス 1 とインターフェイス 2) を使用するプロジェクトで、次のようなものが必要な場合:
intf1::Interface1 int1;
int1.endpoint="xxx";
intf1::ns__Address address;
int1.ns1__getAddress(address);
intf2::Interface1 int2;
int2.endpoint="xxx";
int2.ns2_setAddress(address); //this don't compile like i was expecting because to the compiler they are not the same object (and it is wright...)
質問:
2 つ以上のインターフェイス間でデータ型を共有することは可能ですか? はい?これはどのように達成されますか?
そうでない場合、これを実装するための最良の解決策は何ですか?