digitalmars.D.learn - Not able to use this C++ library in D
I am trying to use C++ DCMTK library ( https://dcmtk.org/ ) functions in D. A relevant reference page is https://support.dcmtk.org/docs/classDcmFileFormat.html#details Following is C++ code modified from https://stackoverflow.com/questions/5052148/how-to-use-dcmtk-in-qt #include "dcmtk/dcmdata/dctk.h" #include <iostream> using namespace std; int main() { DcmFileFormat fileformat; OFCondition status = fileformat.loadFile("test.dcm"); if (status.good()) { cout << "File loaded" << endl; }else{ cerr << "Error: cannot read DICOM file (" << status.text() << ")" << endl; } return 0; } I have tried to do the same in D with following code: import std.stdio; extern (C++) void loadFile(FILE *infile); extern (C++) class DcmFileFormat; extern (C++) class OFCondition; void main(){ DcmFileFormat fileformat; OFCondition status = fileformat.loadFile("test.dcm"); if (status.good()) { writeln("File loaded"); }else{ writeln("Error: cannot read DICOM file (", status.text(), ")"); } } However, I am getting following errors: $ dmd dcmtk_eg.d dcmtk_eg.d(5): Error: class `dcmtk_eg.DcmFileFormat` is forward referenced when looking for loadFile dcmtk_eg.d(5): Error: class `dcmtk_eg.DcmFileFormat` is forward referenced when looking for loadFile dcmtk_eg.d(5): Error: class `dcmtk_eg.DcmFileFormat` is forward referenced when looking for opDot dcmtk_eg.d(5): Error: class `dcmtk_eg.DcmFileFormat` is forward referenced when looking for opDispatch dcmtk_eg.d(10): Error: function dcmtk_eg.loadFile(shared(_IO_FILE)* infile) is not callable using argument types (DcmFileFormat, string) dcmtk_eg.d(10): cannot pass argument fileformat of type dcmtk_eg.DcmFileFormat to parameter shared(_IO_FILE)* infile dcmtk_eg.d(6): Error: class `dcmtk_eg.OFCondition` is forward referenced when looking for good dcmtk_eg.d(6): Error: class `dcmtk_eg.OFCondition` is forward referenced when looking for good dcmtk_eg.d(6): Error: class `dcmtk_eg.OFCondition` is forward referenced when looking for opDot dcmtk_eg.d(6): Error: class `dcmtk_eg.OFCondition` is forward referenced when looking for opDispatch dcmtk_eg.d(6): Error: class `dcmtk_eg.OFCondition` is forward referenced when looking for good dcmtk_eg.d(6): Error: class `dcmtk_eg.OFCondition` is forward referenced when looking for good dcmtk_eg.d(6): Error: class `dcmtk_eg.OFCondition` is forward referenced when looking for good dcmtk_eg.d(6): Error: class `dcmtk_eg.OFCondition` is forward referenced when looking for good dcmtk_eg.d(6): Error: class `dcmtk_eg.OFCondition` is forward referenced when looking for good dcmtk_eg.d(6): Error: class `dcmtk_eg.OFCondition` is forward referenced when looking for mod dcmtk_eg.d(6): Error: class `dcmtk_eg.OFCondition` is forward referenced when looking for good dcmtk_eg.d(6): Error: class `dcmtk_eg.OFCondition` is forward referenced when looking for good dcmtk_eg.d(6): Error: class `dcmtk_eg.OFCondition` is forward referenced when looking for good dcmtk_eg.d(6): Error: class `dcmtk_eg.OFCondition` is forward referenced when looking for good dcmtk_eg.d(6): Error: class `dcmtk_eg.OFCondition` is forward referenced when looking for good Where is the problem and how can it be solved? Thanks for your help.
Jun 05 2019
You should declare methods too, see example https://dlang.org/spec/cpp_interface.html#using_cpp_classes_from_d
Jun 06 2019