Re: [swift-users] question about swift and c callbacks
I simplified your example package and posted a bug report here: https://bugs.swift.org/browse/SR-3556 On Thu, Jan 5, 2017 at 9:59 PM, Yang Yang via swift-users < swift-users@swift.org> wrote: > sorry, i made mistake on compiling. It still report the same link error. > > Yang > > On Wed, Jan 4, 2017 at 11:20 PM Yang Yangwrote: > >> Thanks. >> It compiled successfully now under linux. >> >> >> 2017-01-04 12:29 GMT-06:00 Joe Groff : >> >> >> >> >> > On Dec 30, 2016, at 11:17 AM, Yang Yang via swift-users < >> swift-users@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 >> >> >> >> >> >> >> >> >> > ___ > swift-users mailing list > swift-users@swift.org > https://lists.swift.org/mailman/listinfo/swift-users > > -- Ankit ___ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users
Re: [swift-users] question about swift and c callbacks
sorry, i made mistake on compiling. It still report the same link error. Yang On Wed, Jan 4, 2017 at 11:20 PM Yang Yangwrote: > Thanks. > It compiled successfully now under linux. > > > 2017-01-04 12:29 GMT-06:00 Joe Groff : > > > > > > On Dec 30, 2016, at 11:17 AM, Yang Yang via swift-users < > swift-users@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 > > > > > > > > > ___ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users
Re: [swift-users] question about swift and c callbacks
Thanks. It compiled successfully now under linux. 2017-01-04 12:29 GMT-06:00 Joe Groff: > > > On Dec 30, 2016, at 11:17 AM, Yang Yang via swift-users < > swift-users@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 > > ___ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users
Re: [swift-users] question about swift and c callbacks
Can you create a quick tarball of the swiftpm project. Would expedite the answering of the question. Michael > On Dec 30, 2016, at 11:17 AM, Yang Yang via swift-users >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? > > Thanks, > > Yang > ___ > swift-users mailing list > swift-users@swift.org > https://lists.swift.org/mailman/listinfo/swift-users ___ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users