[swift-users] question about swift and c callbacks

Joe Groff jgroff at apple.com
Wed Jan 4 12:29:26 CST 2017


> On Dec 30, 2016, at 11:17 AM, Yang Yang via swift-users <swift-users at swift.org> wrote:
> 
> I try to wrap a c library in swift package named Test.
> The code looks like this:
> 
> Test1.h
> 
> struct MyParams {
> 	int (*func)();
> };
> 
> typedef struct MyParams MyParams;
> 
> Test2.h
> #include "Test1.h"
> 
> static int test(){
>   return 0;
> }
> 
> void myTest()
> {
> 	MyParams params;
> 	params.func = test;
> }
> 
> 
> Then I try to import the package into swift code and use
> in Test.swift.
> ************************
> import Test
> 
> class TestSwift {
>   func runtest(){
>     myTest()
>   }
> }
> 
> However, the compiler report link error:
> function myTest: error: undefined reference to 'test'
> 
> If I comment out 
> "params.func = test;" in myTest.
> 
> It successfully build. How should I handle this situation?

Try making `test` static inline instead of just static.

-Joe



More information about the swift-users mailing list