Passing pointer to extern(C++) templated function
acehreli at yahoo.com
Tue Oct 13 23:39:38 UTC 2020
On 10/13/20 4:11 PM, James Blachly wrote:
> On 10/13/20 5:23 AM, Jamie wrote:
>> Building with:
>> g++ -c a.cpp
>> dmd main.d a.o
>> Throws the error:
>> /usr/bin/ld: main.o: in function `_Dmain':
>> main.d:(.text._Dmain[_Dmain]+0x31): undefined reference to `void
>> func3<int>(int*, int*)'
>> /usr/bin/ld: main.d:(.text._Dmain[_Dmain]+0x3e): undefined reference
>> to `void func4<int>(int const*, int const)'
>> collect2: error: ld returned 1 exit status
>> Error: linker exited with status 1
> Is the template even instantiated? With just a template definition and
> an object file I am surprised you even have a symbol?
Yes, they all have explicit template instantiations on the C++ side.
I think the issue is with D's "turtles all the way down" style const. My
workaround would be to define wrapper functions that may need to do
casting on one or the other side.
More information about the Digitalmars-d-learn