ddobrev/QtSharp

CppSharp has encountered an error while parsing code.

durswd opened this issue · 10 comments

I tried to generate wrapper on OS X.
But a message 'CppSharp has encountered an error while parsing code.' is shown parsing QtCore, QtGUI and so on.

This error is caused on
QtSharp 0ef1a28
CppSharp d02192ed6651af1bcaa8287b0f0e97f6e65330ad

CppSharp is built using the LLVM and Clang packages.
I replaced old CppSharp into current CppSharp.

I replaced CppSharp.Parser.CLI into CppSharp.Parser.CSharp and CppSharp.CppParser.dll into libCppSharp.CppParser.dylib because of compiling on OS X.

I understood that QtShap is under development.

@durswd thank you for your report. @tritao has been working on the OS X support. He has some local fixes which he's going to send in an hour or two. They are most probably going to help you.

I updated from Qt5.5 to Qt5.6 and updated CppSharp.
But A parsing error still caused.

In addition, An exception has caused.

System.EntryPointNotFoundException
has been thrown _ZN8CppSharp9CppParser3AST30FunctionTemplateSpecializationD

@durswd how important is Qt 5.6 to you? It has a bug - https://bugreports.qt.io/browse/QTBUG-52290 - which prevents the generation of documentation. Let me know if that is fine by you, in this case I'll check this anyway.

Qt 5.6 is not important for me.
I need to use QtSharp on OS X, so I currently try to parse on OS X.

I will edit CppSharp to parse Qt on OS X,
but I has not edit it yet because of no time and lack of skills.

I understand. I was going to fix an OS X-related bug anyway so I'm going to do it now. Afterwards I'll try generation and fix any problems I can find.

@durswd I have committed some changes which enable generation. Please note, however, that I have not updated the binary references for C++# because of some difficulties. Hopefully we are soon going to have NuGet for C++# which will take care of the problem. I have attached a complete archive with the bindings.
QtSharp-0.0.9-Qt-5.5.1-OSX.zip

Unfortunately, this is where the good news end. I was unable to deploy an OS X app which uses both Mono and Qt. The problem is mostly about Mono being 32-bit thus unable to load the 64-bit Qt. Mono already has an universal installer but it uses two separate executables, mono and mono64, and all of their tools are hard-coded to use "mono", the 32-bit version. https://github.com/Monobjc/mono-macosx-64/wiki would've been a solution but it doesn't work because of a bug in Mono ( https://bugzilla.xamarin.com/show_bug.cgi?id=40257 ). Manually writing a script using mono64 and placing it in the .app doesn't work either because Qt relies on its libraries deployed as frameworks which in turn relies on the built in OS X variables such as @executable_path which points to Mono's path and not to the path of the executable. This can only be worked around if Mono is embedded - for example by using a MonoMac template to create the Qt# app - but this fails due to the previous problem (32-bit Mono).

Nevertheless, generation itself - as long as you replace the C++# binaries yourself - should work now. Please try and let me know about any problems.

Eeek! And no sign of a better Mono OS X 64-bit story coming from Xamarin?
No doubt you've talked to @tritao about this already, @ddobrev?

@bobsummerwill I mentioned it once but we haven't discussed it in depth because I am too busy with the templates. I made a breakthrough today so I hope they'll be finished by the end of the month. Then I'll talk to him about it.

Gotcha.

Thank you for updateting. But I have a no time to check it now. I'm sorry.