Comments (3)
Hello, @dickensas! First of all, I got to remind you about Kotlin/Native issue tracker migration(see #4079). This particular problem seems to be more likely a question rather than a bug, so maybe it could be asked on the #kotlin-native slack channel.
About the error itself. The void *
construction from C is being mapped to the special COpaquePointer type(see details here). As the documentation says, such pointer should be explicitly cast to necessary type using .reinterpret()
method. In this case, it should look somehow like this:
memScoped {
val lib = alloc<libnative_ExportedSymbols>().apply {
libnative_symbols()
}
println(lib.kotlin.root.example.forIntegers.reinterpret<<CFunction<() -> String>>().invoke())
}
Also, I just want to ask about reasons of choosing such uneasy approach. Using a .klib
might be more relevant here, or I'm missing something?
from kotlin-native.
I did definitely referred the code for libcurl
and curl
and understood in the past
The reason I am going for direct DLL is that I am trying create .pyd
for python without a C stub
Documentation Reference - .dll -> .pyd
Regarding your code, I could not compile it in kotlin 1.3.72
Therefore I went for this code, Above main method I declared typealias
typealias SomeFun = CFunction<() -> CPointer<ByteVar>?>
....
....
val s = lib.kotlin.root.example.someLibraryMethod?.reinterpret<SomeFun>()
println(s?.invoke())
But I am getting null
This is the GitHub URL Kotlin DLL - to - Kotlin
from kotlin-native.
This technique is working, therefore I close this issue
memScoped {
val lib:CPointer<libmyext_ExportedSymbols>? = libmyext_symbols()
println(lib!!.pointed.kotlin.root.example.getHello!!.reinterpret<SomeFun>()!!()!!.toKString())
}
Output
> Task :runDebugExecutableLibpymyext
That is from Kolin DLL
BUILD SUCCESSFUL in 9s
from kotlin-native.
Related Issues (20)
- Important: please use YouTrack for bugs and feature requests HOT 7
- pods framework not work in xcode HOT 10
- How to interact with kotlin collections from C/C++ code? HOT 4
- Code of cmake project, compile error error: invalid use of incomplete type 'std::filesystem::__cxx11::filesystem_error' HOT 1
- How can I invoke win32 function pointer with _stdcall type HOT 3
- Not Working SiwftyUI rendering when library implemented to project
- Are there any way for modify Other Link Flag on Xcode by Gradle? HOT 1
- How I can pass String to variable type URL? HOT 2
- Platform iOS package is missing HOT 2
- Can not build ios app into device because "embedded framework 'SharedCode.framework' was built for iOS Simulator." HOT 3
- Please read the text below
- Please read the text below HOT 1
- Xcode 11.6 still using older versions of kotlin native HOT 8
- Why publishLibraryVariants don't work ? HOT 1
- Compilation failed: llvm.llvm (initialization failure) NoClassDefFoundError: llvm.llvm HOT 5
- package of cinterop dependency (Swift framework) not found in the iOSMain sources set HOT 1
- Retrieving package behind authenticated proxy fails 407 HOT 7
- Objective-C interoperability architecture issue Undefined symbols for architecture x86_64 HOT 3
- ld: framework not found AFNetworking HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kotlin-native.