Cliff Jansen commented on PROTON-254:

This error also happens on Linux with -DBUILD_WITH_CXX.

It's a catch 22.  swig fails because it worries about complexities of nested 
structures that don't affect us since proton doesn't use any C++ outside C.

The fact that JNI defines separate calls in C and C++ makes it an unnatural act 
 to feed a swig C wrapper to a C++ compile.

So it looks like a custom wrapper object needs to be made for pn_atom_t_u.  
Fortunately, older versions of swig would create working wrappers for the 
nested structure.  So, even though my swig expertise is minimal, I hope to be 
able to use the wrapper from the older swig as a basis for a generic version.
> Swig generated c code for java bindings fails to compile on Windows Visual 
> Studio 2010
> --------------------------------------------------------------------------------------
>                 Key: PROTON-254
>                 URL: https://issues.apache.org/jira/browse/PROTON-254
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: proton-c
>    Affects Versions: 0.4
>         Environment: Windows 7
> Visual Studio 2010
>            Reporter: Keith Wall
>            Assignee: Cliff Jansen
>         Attachments: make-proton-jni-cxx-errors.txt
> Swig generated C code for the Java bindings fails to compile on Visual Studio 
> 2010 with error message:
> C1083: Cannot open include file: 'stdbool.h': No such file or directory
> After discussion on list [1], we tried changing bindings/java/CMakeLists.txt 
> to use CPLUSPLUS ON directive to CMake in the case where BUILD_WITH_CXX has 
> been enabled earlier in the build.
> endif (BUILD_WITH_CXX)
> Switching to CPP in this way exposed a number of errors when compiling the 
> CPP code resulting from the java.i (casting issues, pointer arithmetic etc - 
> see attached make-proton-jni-cxx-errors.txt).  However, even after resolving 
> the CPP compilation issues, we then encounter a problem with Swig's handling 
> of nested unions when when CPP.  The seeming inability of SWIG (when used 
> with CPP) to represent the union means that SWIG does not produce 
> pn_atom_t_u.java.  JNIMessage.java, which references pn_atom_t_u, 
> consequently fails to compile.
> The warning from swig is:
> /home/keith/src/proton/proton-c/include/proton/codec.h:91: Warning 312: 
> Nested union not currently supported (ignored).
> [1] 
> http://mail-archives.apache.org/mod_mbox/qpid-proton/201302.mbox/%3ccamyv19mgbdvd2wextvpwywtysskadokb7wtj+u-3jkncwdx...@mail.gmail.com%3E

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to