Hi All, I am sure you have all come across this before but it is one thing I have not been able to work out yet.
There is a wonderful audio library that i wish to use but it is not available as source code (for obvious reasons) and I need a way to either convert their libraries to a form that will link correctly with the Reasons SDK or point the library's author to a tool as to be able to compile it to a form I could use to then link into my project.
Any thoughts or experiences most welcome!
Thanks,
Murf.
Intermediate compilation of third party libraries
You would have to get the library author the Rack Extension SDK and compiler, and have them build those Reason specific intermediate object/bytecode files. Once you had those, you would need to modify your builder to link them in without actually compiling them. Might be possible, but you are going to be digging into their python build scripts to make those things happen.
Thanks, I guessed as much.rcbuse wrote: ↑17 May 2023You would have to get the library author the Rack Extension SDK and compiler, and have them build those Reason specific intermediate object/bytecode files. Once you had those, you would need to modify your builder to link them in without actually compiling them. Might be possible, but you are going to be digging into their python build scripts to make those things happen.
Murf.
You also have to consider the fact that the RE SDK c++ compiler is very very limited in what it supports (restrictions that are not "standard", for example, global statics are 100% forbidden + subset of the standard library). If you have the source code of the library, it is already a challenge for you to make it work with the compiler. So asking a third party to "simply" compile their code for the SDK would be an enormous ask IMO.
When I worked on Macro and ported the open source C code to work with the SDK it was quite a challenging and very time consuming task...
And TBH, using any external library with the RE SDK is always challenging, because of all these restrictions
When I worked on Macro and ported the open source C code to work with the SDK it was quite a challenging and very time consuming task...
And TBH, using any external library with the RE SDK is always challenging, because of all these restrictions
Thanks, very dishearteningpongasoft wrote: ↑18 May 2023You also have to consider the fact that the RE SDK c++ compiler is very very limited in what it supports (restrictions that are not "standard", for example, global statics are 100% forbidden + subset of the standard library). If you have the source code of the library, it is already a challenge for you to make it work with the compiler. So asking a third party to "simply" compile their code for the SDK would be an enormous ask IMO.
When I worked on Macro and ported the open source C code to work with the SDK it was quite a challenging and very time consuming task...
And TBH, using any external library with the RE SDK is always challenging, because of all these restrictions
![Smile :)](./images/smilies/icon_e_smile.gif)
Well, that's the price for forward compatibility and sandbox stability.
Well, ... code wise, it is theoretically possible, at least, to use the clang library to modify the code and inject dependencies to enable some of the functionality that is disabled.
I wrote a library for myself to freely create and destroy objects along with a bunch of replacements for whatever Boost library stuff I wanted to use that used those methods instead (Emcee: a locally scoped C++ memory management library).
Here's a list:
Anyway, the same methods I used is what your library code could theoretically be processed to utilize.
But this is only when you have the source.
What sort of libraries are you trying to use?
I wrote a library for myself to freely create and destroy objects along with a bunch of replacements for whatever Boost library stuff I wanted to use that used those methods instead (Emcee: a locally scoped C++ memory management library).
Here's a list:
- Memory management system
- MaskedCellVector: A "cell vector" maps a small array to a larger vector space ...
- MemoryDependent: Indicates at compile time that a class accepts a Memory pointer in construction.
- New: Implements non-trivial object and array allocation and construction (also has minor support for memory arenas)
- Object: Convenient base class to make it easier to propagate access to the library's allocators
- Containers: Array, Map, Vector, Set
- Literal: Converts string literals into objects but fails with non-literal strings.
- Smart pointers (works with arrays too):
- SharedPtr, WeakPtr, UniquePtr
Anyway, the same methods I used is what your library code could theoretically be processed to utilize.
But this is only when you have the source.
What sort of libraries are you trying to use?
That's simple:
1. Register as a developer.
2. Build your RE
3. Upload a test build of the RE
4. Profit
![Wink ;)](./images/smilies/icon_e_wink.gif)
Depending on your mad coding skills step 2 could possibly break your neck or at least take quite some effort or time to learn the details of the SDK.
-
- Information
-
Who is online
Users browsing this forum: No registered users and 1 guest