JuliaInterop / Cxx.jl

The Julia C++ Interface

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

cxxnew does not work with constructor arguments

TomasOberhuber opened this issue · comments

Hi,

I am new in Julia so I hope I am not doing some kind of stupid mistake. However, what is wrong with this example?

using Cxx

cxx"""
#include <string>

std::string s( "123" );
"""

function testCxx()
   std_str = @cxxnew std::string( "123" )
end

testCxx()

The output is as follows:

ERROR: LoadError: Got bad type information while compiling Cxx.CxxCore.CppNNS{Tuple{:std,:string}} (got String for argument 1)
Stacktrace:
 [1] error(::String) at ./error.jl:33
 [2] check_args at /home/oberhuber/.julia/packages/Cxx/1RaOv/src/codegen.jl:447 [inlined]
 [3] _cppcall(::Type, ::Type, ::Bool, ::Bool, ::Tuple{DataType}) at /home/oberhuber/.julia/packages/Cxx/1RaOv/src/codegen.jl:516
 [4] #s37#41(::Any, ::Any, ::Any, ::Any) at /home/oberhuber/.julia/packages/Cxx/1RaOv/src/codegen.jl:849
 [5] (::Core.GeneratedFunctionStub)(::Any, ::Vararg{Any,N} where N) at ./boot.jl:524
 [6] testCxx() at /mnt/ssd/tmp/jtnl/cxx-std-string-test.jl:11
 [7] top-level scope at /mnt/ssd/tmp/jtnl/cxx-std-string-test.jl:14
 [8] include at ./boot.jl:328 [inlined]
 [9] include_relative(::Module, ::String) at ./loading.jl:1105
 [10] include(::Module, ::String) at ./Base.jl:31
 [11] exec_options(::Base.JLOptions) at ./client.jl:287
 [12] _start() at ./client.jl:460
in expression starting at /mnt/ssd/tmp/jtnl/cxx-std-string-test.jl:14

If I replace the line

std_str = @cxxnew std::string( "123" )

with

std_str = @cxxnew std::string( )

it works as expected.