> On Apr 17, 2017, at 6:19 PM, Rick Mann via swift-users 
> <swift-users@swift.org> wrote:
> 
> I'm trying to make a module out of a C library and header file. It has at 
> least one empty struct:
> 
> struct lgs_context_t {};
> 
> and a function:
> 
> LGS_EXPORT struct lgs_context_t* lgs_init(const lgs_context_params_t* params);
> 
> Swift sees the function, I can call it and assign the result to a variable, 
> but Xcode (as usual) fails to show me what it thinks the type is. So I can't 
> declare a class member to hold the returned pointer.
> 
> I'm trying to declare the member like this:
> 
>    var        ctx: lgs_context_t?             //  Use of undeclared type 
> 'lgs_context_t'
> 
> I finally tried calling it like this:
> 
>    let ctx: UnsafeMutablePointer = lgs_init(...)
> 
> and the resulting error message gave me OpaquePointer. But couldn't it just 
> typealias lgs_context_t to OpaquePointer?
> 
> Is there any way to do this in the modulemap?
> 
> Thanks!

The compiler uses OpaquePointer for pointers to incomplete types in C. It 
sounds like you left lgs_context_t declared but not defined in your header, in 
other words you wrote 'struct lgs_context_t;' without braces. If it were truly 
defined to be empty, then the type should have been imported.

-Joe
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to