Я использую рамки от поставщика, сделанного в C, эта система имеет следующую структуру:Использование C Структуры в быстрой
typedef struct tTINFO {
int size;
const char* vId;
const char* cId;
const char* cmm;
const char* cKey;
} TINFO;
, который импортируется в стриж как таковые:
public struct tTINFO {
/**< \brief Size of the structure */
public var size: Int32
/**< \brief Pointer to a null-terminated string*/
public var vId: UnsafePointer<Int8>
/**< \brief Pointer to a null-terminated string*/
public var cId: UnsafePointer<Int8>
/**< \brief Pointer to a null-terminated string. May be NULL. */
public var cmm: UnsafePointer<Int8>
public var cKey: UnsafePointer<Int8>
public init()
public init(size: Int32, vId: UnsafePointer<Int8>, cId: UnsafePointer<Int8>, cmm: UnsafePointer<Int8>, cKey: UnsafePointer<Int8>)
}
public typealias TINFO = tTINFO
К который я пытался использовать в стрижа как:
var cI:TINFO = TINFO(size: sizeof(TINFO),
vId: "vID",
cId: "cID",
cmm: nil,
cKey: "cKey")
и она будет передана следующей функции в заголовке
public func TI(CI: UnsafeMutablePointer<TINFO>, _ Reserved: UnsafeMutablePointer<Void>, _ Flags: Int32) -> TT
как таковые:
TI(&cI, nil, initOptions)
Теперь компилятор не дает мне никаких ошибок в мой код, ни он выходит из строя, когда он работает, однако, рамки при использовании этого кода в стриже возвращает мне ошибку.
Мои вопросы:
Является ли моя инициализация структуры правильно, я действительно думаю, что это не так, как я не могу больше печатать содержимое ХИ я только получить значения указателей? Если это неправильно, как я могу исправить?
Я видел в нескольких местах, чтобы получить размер структуры, я должен использовать sizeof (TInfo), другие говорят, что его strideof из-за заполнения, но это все еще не ясно для меня, когда они применяются, поскольку оба возвращают одинаковый размер.
был бы признателен за любую помощь в этом. Btw я использую swift2.3
Edit:
Благодаря ссылке разделяемой @AMomchilov в этом post настройки каждой структуры собственности как CChar перед передачей его в структуры работали, такие как:
("vID" as NSString).UTF8String
Что ошибку вы дать? – Carcigenicate
http://stackoverflow.com/q/30042494/3141234 – Alexander
@Carcigenicate ошибки связаны с поставщиком, и он просто возвращает общую ошибку, к сожалению :( – RicardoDuarte