digitalmars.D.learn - linking trouble
- hridyansh thakur (46/46) Sep 06 2018 i am on windows i have tried
- rikki cattermole (5/72) Sep 06 2018 That definition isn't complete. Missing at the very least ``();`` to
- hridyansh thakur (3/10) Sep 06 2018 compiler is failing to rercognise the .o file
- Mike Parker (16/29) Sep 06 2018 A .o file? Are you using MinGW to compile your C++? You're not
i am on windows i have tried DMD LDC and i am getting same linking error with linking my c++ object i am doing by the official tutorial (dlang spec book) here is my app.d code import std.stdio; void main() { //writeln("Edit source/app.d to start your project."); int[] m = someFUN(44,55); ulong k = m.length; for (int i=0;i<k;i++) writeln(m[i]); } auto someFUN(int j , int k){ int[] some = new int[j]; for (int i =0 ; i<j ; i++) some[i] = i; return some ; } extern(C++){int*file_io} here is the C++ code #include <iostream> #include <stdio.h> #include <stdlib.h> FILE *fp; int*file_io(){ char name[20] ; std::cout << "please enter the file name " << '\n'; std::cin >> name; fp = fopen(name,"r+"); char a = 'a'; int n = 0 ; while (!feof(fp)) { a = fgetc(fp); if (a=='\n') { n++; } } int *p = (int*)calloc(n,sizeof(int)); for (size_t i = 0; i < n ; i++) { fscanf(fp,"%d",(p+i)); } return p; }
Sep 06 2018
On 07/09/2018 4:03 AM, hridyansh thakur wrote:i am on windows i have tried DMD LDC and i am getting same linking error with linking my c++ object i am doing by the official tutorial (dlang spec book) here is my app.d code import std.stdio; void main() { //writeln("Edit source/app.d to start your project."); int[] m = someFUN(44,55); ulong k = m.length; for (int i=0;i<k;i++) writeln(m[i]); } auto someFUN(int j , int k){ int[] some = new int[j]; for (int i =0 ; i<j ; i++) some[i] = i; return some ; } extern(C++){int*file_io}That definition isn't complete. Missing at the very least ``();`` to make it a function declaration.here is the C++ code #include <iostream> #include <stdio.h> #include <stdlib.h> FILE *fp; int*file_io(){ char name[20] ; std::cout << "please enter the file name " << '\n'; std::cin >> name; fp = fopen(name,"r+"); char a = 'a'; int n = 0 ; while (!feof(fp)) { a = fgetc(fp); if (a=='\n') { n++; } } int *p = (int*)calloc(n,sizeof(int)); for (size_t i = 0; i < n ; i++) { fscanf(fp,"%d",(p+i)); } return p; }So what is the errors you're getting? And what are the commands you're executing?
Sep 06 2018
On Thursday, 6 September 2018 at 16:59:43 UTC, rikki cattermole wrote:On 07/09/2018 4:03 AM, hridyansh thakur wrote:compiler is failing to rercognise the .o file[...]That definition isn't complete. Missing at the very least ``();`` to make it a function declaration.[...]So what is the errors you're getting? And what are the commands you're executing?
Sep 06 2018
On Friday, 7 September 2018 at 02:44:24 UTC, hridyansh thakur wrote:On Thursday, 6 September 2018 at 16:59:43 UTC, rikki cattermole wrote:A .o file? Are you using MinGW to compile your C++? You're not going to get very far if you are. You have two options that are guaranteed to work. Use the Digital Mars C++ compiler to compile your C++ file to an OMF object then use the default OPTLINK linker when building. This only supports 32-bit builds. dmd foo.d bar.obj The other option is to use the Microsoft linker, which requires the MS build tools be installed, either via the build tools distribution or Visual Studio. Then you can compile your C++ file to a COFF object with the MS compiler for 32- or 64-bit and build your executable with one of the following: dmd -m32mscoff foo.d bar.obj dmd -m64 foo.d bar.objOn 07/09/2018 4:03 AM, hridyansh thakur wrote:compiler is failing to rercognise the .o file[...]That definition isn't complete. Missing at the very least ``();`` to make it a function declaration.[...]So what is the errors you're getting? And what are the commands you're executing?
Sep 06 2018