[MacRuby-devel] c++ lib

Louis-Philippe default at spiralix.org
Thu May 27 13:41:02 PDT 2010


Thanks Laurent!
MYSDK is a c++ SDK... 4 c++ headers and a c++ binary archive (.a)
I will work out my Objective-C wrapper then!

2010/5/27 Laurent Sansonetti <lsansonetti at apple.com>

> Hi Louis-Philippe,
>
> BridgeSupport doesn't support C++. It only exposes C and Objective-C
> symbols.
>
> In your C++ library, what is MYSDK exactly? If it isn't an Objective-C
> class, it won't be accessible from MacRuby.
>
> In order to use your C++ code in MacRuby, the best way is to wrap the calls
> you need in Objective-C APIs. You can then access them from MacRuby at no
> cost. And a bridgesupport file won't be needed.
>
> Laurent
>
> On May 27, 2010, at 12:48 PM, Louis-Philippe wrote:
>
> I see on the BridgeSupport support to redirect all request to Laurent...
> so here it is...
>
> Laurent,
> Is it desperate to keep trying every options of gen_bridge_metadata?
> will it swallow my c++ framework at some point?
>
> thanks
>
> 2010/5/27 Jordan Breeding <jordan.breeding at me.com>
>
>> Don't know, the only times I have used that method the header file itself
>> is just straight C, the implementation hides all of the C++ in my case.
>> Maybe gen_bridge_metadata doesn't handle C++.
>>
>> On May 27, 2010, at 11:49, Louis-Philippe wrote:
>>
>> any idea why gen_bridge_metadata does spit this:
>>
>> gen_bridge_metadata --64-bit -f ./MYSDK.framework -o MYSDK.bridgesupport
>> ./MYSDK.framework/Headers/MYSDK.h:21:18: error: string: No such file or
>> directory
>> /usr/bin/cpp-4.2 returned 1 exit status
>> line was: /usr/bin/cpp-4.2 -D__APPLE_CPP__ -include
>> /usr/include/AvailabilityMacros.h -F"."
>> "./MYSDK.framework/Headers/MYSDK.h" 2>/tmp/.cpp.err
>> Usage: gen_bridge_metadata [options] <headers...>
>> Use the `-h' flag or consult gen_bridge_metadata(1) for help.
>>
>> it's referring to this line in the SDK header:
>> #include <string>
>>
>> and the SDK uses std::string all over the place...
>> why is it complaining like this?
>>
>>
>> 2010/5/27 Jordan Breeding <jordan.breeding at me.com>
>>
>>> You might have to make a bridge support file and include it in your
>>> framework.
>>>
>>> Something like this (although this is specific to running inside my Xcode
>>> project build):
>>>
>>> printf "Building BridgeSupport files...\n\n"
>>>
>>> BRIDGE_SUPPORT_DIR="Resources/BridgeSupport"
>>> BRIDGE_SUPPORT_FILE="${BRIDGE_SUPPORT_DIR}/${TARGET_NAME}.bridgesupport"
>>>
>>> if [[ "${TARGET_BUILD_DIR}/${WRAPPER_NAME}/${TARGET_NAME}" -nt
>>> "${TARGET_BUILD_DIR}/${WRAPPER_NAME}/${BRIDGE_SUPPORT_FILE}" ]]; then
>>>   if [[ ! -d "${TARGET_BUILD_DIR}/${WRAPPER_NAME}/${BRIDGE_SUPPORT_DIR}"
>>> ]]; then
>>>     mkdir -p "${TARGET_BUILD_DIR}/${WRAPPER_NAME}/${BRIDGE_SUPPORT_DIR}"
>>>   fi
>>>   gen_bridge_metadata --64-bit --framework
>>> "${TARGET_BUILD_DIR}/${WRAPPER_NAME}" -o
>>> "${TARGET_BUILD_DIR}/${WRAPPER_NAME}/${BRIDGE_SUPPORT_FILE}"
>>> fi
>>>
>>> On May 27, 2010, at 10:31, Louis-Philippe wrote:
>>>
>>> Thanks!
>>> ok... I sorted some of the issues out... I was able to make a x86_64
>>> framework out of the SDK by including the proper exports symbols (using nm
>>> with the -arch flag).
>>>
>>> so now it loads fine with the framework method...
>>> but I cant access the c++ namespace:
>>> "NameError: uninitialized constant MYSDK"
>>>
>>> 2010/5/27 Jordan Breeding <jordan.breeding at me.com>
>>>
>>>> Then you could force macruby/macirb to run as i386:
>>>>
>>>> `arch -arch i386 macirb`
>>>>
>>>> On May 27, 2010, at 10:13, Louis-Philippe wrote:
>>>>
>>>> it only builds for i386...
>>>> getting errors when trying to build for x86_64...
>>>> thats why I tried as I tested to build only for i386...
>>>>
>>>> 2010/5/27 Jordan Breeding <jordan.breeding at me.com>
>>>>
>>>>> Try building your framework as both i386 and x86_64.
>>>>>
>>>>> On May 27, 2010, at 10:00, Louis-Philippe wrote:
>>>>>
>>>>> file PATH/MYSDK.framework/MYSDK
>>>>> ./MYSDK: Mach-O dynamically linked shared library i386
>>>>>
>>>>> file `which macruby`:
>>>>> /usr/local/bin/macruby: Mach-O universal binary with 2 architectures
>>>>> /usr/local/bin/macruby (for architecture i386): Mach-O executable i386
>>>>> /usr/local/bin/macruby (for architecture x86_64): Mach-O 64-bit
>>>>> executable x86_64
>>>>>
>>>>>
>>>>> 2010/5/27 Louis-Philippe <default at spiralix.org>
>>>>>
>>>>>> sorry, the second one really is:
>>>>>>
>>>>>> ./MYSDK (from the MYSDK.framework)
>>>>>> -bash: ./MYSDK: cannot execute binary file
>>>>>>
>>>>>> 2010/5/27 Louis-Philippe <default at spiralix.org>
>>>>>>
>>>>>> uname -a:
>>>>>>> Darwin modullpmacbook.local 10.3.0 Darwin Kernel Version 10.3.0: Fri
>>>>>>> Feb 26 11:58:09 PST 2010; root:xnu-1504.3.12~1/RELEASE_I386 i386
>>>>>>>
>>>>>>> ./MYSDK (from the MYSDK.framework)
>>>>>>> -bash: ./R3DSDK: No such file or directory
>>>>>>>
>>>>>>> which macruby:
>>>>>>> /usr/local/bin/macruby
>>>>>>>
>>>>>>> by the way, I tried it in a MacRuby cocoa app inside of xcode, but
>>>>>>> the error sample I pasted above is from a macirb execution
>>>>>>>
>>>>>>>
>>>>>>> 2010/5/27 Joel Reymont <joelr1 at gmail.com>
>>>>>>>
>>>>>>> Louis-Philippe,
>>>>>>>>
>>>>>>>> On May 27, 2010, at 3:25 PM, Louis-Philippe wrote:
>>>>>>>>
>>>>>>>> > Did find:
>>>>>>>> >       /PATH/MYSDK.framework/MYSDK: mach-o, but wrong architecture)
>>>>>>>> >       from /PATH/(irb):2:in `<main>'
>>>>>>>>
>>>>>>>> Can you paste the output from the following?
>>>>>>>>
>>>>>>>> uname -a
>>>>>>>>
>>>>>>>> file ATH/MYSDK.framework/MYSDK
>>>>>>>>
>>>>>>>> file `which macruby`
>>>>>>>>
>>>>>>>>        Thanks, Joel
>>>>>>>>
>>>>>>>> ---
>>>>>>>> http://twitter.com/wagerlabs
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> MacRuby-devel mailing list
>>>>>>>> MacRuby-devel at lists.macosforge.org
>>>>>>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>> _______________________________________________
>>>>> MacRuby-devel mailing list
>>>>> MacRuby-devel at lists.macosforge.org
>>>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> MacRuby-devel mailing list
>>>>> MacRuby-devel at lists.macosforge.org
>>>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>>>>
>>>>>
>>>> _______________________________________________
>>>> MacRuby-devel mailing list
>>>> MacRuby-devel at lists.macosforge.org
>>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> MacRuby-devel mailing list
>>>> MacRuby-devel at lists.macosforge.org
>>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>>>
>>>>
>>> _______________________________________________
>>> MacRuby-devel mailing list
>>> MacRuby-devel at lists.macosforge.org
>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>>
>>>
>>>
>>> _______________________________________________
>>> MacRuby-devel mailing list
>>> MacRuby-devel at lists.macosforge.org
>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>>
>>>
>> _______________________________________________
>> MacRuby-devel mailing list
>> MacRuby-devel at lists.macosforge.org
>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>
>>
>>
>> _______________________________________________
>> MacRuby-devel mailing list
>> MacRuby-devel at lists.macosforge.org
>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>
>>
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>
>
>
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20100527/c5f81d14/attachment-0001.html>


More information about the MacRuby-devel mailing list