digitalmars.D.learn - interfacing cpp
- f (38/38) Oct 22 std.cpp
- Salih Dincer (6/48) Oct 22 In C++, template classes and some STL constructs (e.g.
std.cpp -- #include \<vector> #include \<iostream> #include \<string> using namespace std; void a(string a) { cout\<\<" hello " \<\<a\<\<endl; } s.d -- module s; import core.stdcpp.string; extern(C++) { final void a(basic_string!char a); } main.d -- void main() { import s; import core.stdcpp.string; auto i=basic_string!char("hello"); a(i); } i've read the interfacing cpp on documentation, ok then the compiler mesasge for this libstdc++ std::__cxx11::basic_string is not yet supported; the struct contains an interior pointer which breaks D move semantics! but with options AA="-D_GLIBCXX_USECXX11_ABI=0" on g++ , and BB="-version=_GLIBCXX_USE_CXX98_ABI" on dmd the message is : Error: undefined reference to `a(std::string)` how to solve the, std:string , std:vector, std:optional ? is there any article / links on general interfacing c++ problem solving ? thanks
Oct 22
On Tuesday, 22 October 2024 at 10:50:22 UTC, f wrote:std.cpp -- ```c #include \<vector> #include \<iostream> #include \<string> using namespace std; void a(string a) { cout\<\<" hello " \<\<a\<\<endl; } s.d -- ```d module s; import core.stdcpp.string; extern(C++) { final void a(basic_string!char a); } main.d -- void main() { import s; import core.stdcpp.string; auto i=basic_string!char("hello"); a(i); } ``` i've read the interfacing cpp on documentation, ok then the compiler mesasge for this libstdc++ std::__cxx11::basic_string is not yet supported; the struct contains an interior pointer which breaks D move semantics! but with options AA="-D_GLIBCXX_USECXX11_ABI=0" on g++ , and BB="-version=_GLIBCXX_USE_CXX98_ABI" on dmd the message is : Error: undefined reference to `a(std::string)` how to solve the, std:string , std:vector, std:optional ? is there any article / links on general interfacing c++ problem solving ? thanksIn C++, template classes and some STL constructs (e.g. std::basic_string) cannot be directly transferred to D because the compile-time mechanisms for templates in C++ are different from D. SDB 79
Oct 22