64ビットのDLLを使用する64ビットのDelphiエクスポートプログラムを作成しています。私が得る問題は、c DLLがDelphiのenumを認識せず、間違ったデータ型のエラーを返すことです。私は{$ packenums}や{$ Z}ディレクティブをDelphiコンパイラに使ってみましたが、同じエラーが返されました。私はxe8 Delphiを使用しています。列挙型は、次のようになります。Cヘッダに64ビットのDLLを64ビットのDelphiで読み込むときの列挙の問題
type
DDCDataType=(
DDC_notype = 0,
DDC_UInt8 = 5, // unsigned char
DDC_Int16 = 2, // short
DDC_Int32 = 3, // int
DDC_Float = 9, // float -> single
DDC_Double = 10, // double
DDC_String = 23 // string
);
私はこれが意味:) 感謝します願っています
typedef enum {
DDC_UInt8 = 5, // unsigned char
DDC_Int16 = 2, // short
DDC_Int32 = 3, // int
DDC_Float = 9, // float
DDC_Double = 10, // double
DDC_String = 23, // string
DDC_Timestamp = 30, // timestamp (Year/Month/Day/Hour/Minute/Second/Millisecond components)
} DDCDataType;
のように見えます!
ここではあまり意味をなさない。なぜあなたは値をコメントアウトしましたか?確かに彼らは重要です。 Cコードも見えませんか?どのようにして目標が何であるかを知ることができます。あなたの問題を除いて、ここでは私の単純なSO interopの最大値で学ぶ機会があります:* interopの質問は常にinteropの境界の両側を提示する必要があります*。あなたは片面を提示しただけです。 –
私はコメントとノーの両方で試してみましたが、同じ理由で同じ理由で作業していました。 – Primus
あなたが間違った値を指定した場合、どのように動作する可能性がありますか?試行錯誤。それはあなたのために今まで働いていますか? –