I want to call a GNU-Fortran-library from a GNU-C++ source. Is that
possible at all? If yes, what is to be done to link the program?
I get an error message that says that the module MAIN_ cannot be found.
The library withe the fortran modules is known in the project. If I try
to add more Fortran libraries to the project the Dev-Cpp aborts
completely.
Edit: 16:56
I tried to test again. Because I couldn't save the project, I opened a
new one. Strange to say but now I got error messages at compile time so
that I had to add the "extern void" statements.
Here the program:
#include <windows.h>
#include <conio.h>
extern void qqopen(int,int,char);
extern void qqpoint(int,int);
extern void qqline(int,int);
extern void qqclose();
int main()
{
int ix, iy;
ix=1201; iy=1001;
qqopen(ix,iy,'.\\qqtest.bmp');
ix=10;iy=10;
qqpoint(ix,iy);
ix=1190; iy=990;
qqline(ix,iy);
qqclose();
}
Now I get linkage messages meaning that the library modules couldn'd be
found. From this reason I dont get the message with the missing MAIN_
atthis time. But it will come back I think. Here the toc of the modlib:
qqbord.o
qqcircle.o
qqclose.o
qqfill.o
qqline.o
qqopen.o
qqor.o
qqplot.o
qqpoint.o
qqrandom.o
qqwhite.o
And here the actual messages:
F:\C\Dev-Cpp\bin\main.o In function `main':
[Linker error] undefined reference to
`qqopen(int, int, char)'
[Linker error] undefined reference to
`qqpoint(int, int)'
[Linker error] undefined reference to
`qqline(int, int)'
[Linker error] undefined reference to
`qqclose()'
F:\C\Dev-Cpp\bin\main.o ld returned 1 exit status
F:\C\Dev-Cpp\Makefile.win [Build Error] [QQPlot.exe] Error 1
What am I doing wrong? 11 2949
Cottonwood wrote: I want to call a GNU-Fortran-library from a GNU-C++ source. Is that possible at all? If yes, what is to be done to link the program?
[redacted]
What am I doing wrong?
What you're doing wrong is asking in the wrong group. I suspect you'd
be able to get a lot better help in the newsgroup gnu.g++.help
What you have is a question about a particular implementation, not about
the lanugage itself, so it's not topical in c.l.c++. However, the
people over gnu.g++.help know all about g++, and should be able to help you.
Cottonwood wrote: I want to call a GNU-Fortran-library from a GNU-C++ source. Is that possible at all? If yes, what is to be done to link the program?
I get an error message that says that the module MAIN_ cannot be found. The library withe the fortran modules is known in the project. If I try to add more Fortran libraries to the project the Dev-Cpp aborts completely.
Edit: 16:56
I tried to test again. Because I couldn't save the project, I opened a new one. Strange to say but now I got error messages at compile time so that I had to add the "extern void" statements. Here the program:
#include <windows.h> #include <conio.h> extern void qqopen(int,int,char); extern void qqpoint(int,int); extern void qqline(int,int); extern void qqclose();
Try something like
extern "C" void qqopen(int*,int*,char*);
Fortran certainly does not use C++ name mangling and does not pass
parameters by value.
To successfully link you probably need a Fortran runtime library. Their
should be one as part of the GNU g77 package normally called libg2c.a
or similar.
Cottonwood wrote: I want to call a GNU-Fortran-library from a GNU-C++ source. Is that possible at all? If yes, what is to be done to link the program?
I get an error message that says that the module MAIN_ cannot be found. The library withe the fortran modules is known in the project. If I try to add more Fortran libraries to the project the Dev-Cpp aborts completely.
Edit: 16:56
I tried to test again. Because I couldn't save the project, I opened a new one. Strange to say but now I got error messages at compile time so that I had to add the "extern void" statements. Here the program:
#include <windows.h> #include <conio.h> extern void qqopen(int,int,char); extern void qqpoint(int,int); extern void qqline(int,int); extern void qqclose(); int main() { int ix, iy;
ix=1201; iy=1001; qqopen(ix,iy,'.\\qqtest.bmp'); ix=10;iy=10; qqpoint(ix,iy); ix=1190; iy=990; qqline(ix,iy); qqclose(); }
Now I get linkage messages meaning that the library modules couldn'd be found. From this reason I dont get the message with the missing MAIN_ atthis time. But it will come back I think. Here the toc of the modlib:
qqbord.o qqcircle.o qqclose.o qqfill.o qqline.o qqopen.o qqor.o qqplot.o qqpoint.o qqrandom.o qqwhite.o
And here the actual messages:
F:\C\Dev-Cpp\bin\main.o In function `main': [Linker error] undefined reference to `qqopen(int, int, char)' [Linker error] undefined reference to `qqpoint(int, int)' [Linker error] undefined reference to `qqline(int, int)' [Linker error] undefined reference to `qqclose()' F:\C\Dev-Cpp\bin\main.o ld returned 1 exit status F:\C\Dev-Cpp\Makefile.win [Build Error] [QQPlot.exe] Error 1
What am I doing wrong?
Your 'extern' declarations should be "extern "c" void" to avoid the
name mangling that C++ will do, that Fortran does not. This is
probably part of your problem.
Thanks. I did. Here is the new source:
#include <windows.h>
#include <conio.h>
extern "C" void qqopen(int*,int*,char*);
extern "C" void qqpoint(int*,int*);
extern "C" void qqline(int*,int*);
extern "C" void qqclose();
int main()
{
int ix, iy;
ix=1201; iy=1001;
qqopen(ix*,iy*,'.\\qqtest.bmp'*);
ix=10;iy=10;
qqpoint(ix*,iy*);
ix=1190; iy=990;
qqline(ix*,iy*);
qqclose();
}
But now I get messages like this:
12 F:\C\Dev-Cpp\bin\main.cpp expected primary-expression before ','
token
And I get this message (as before):
12:16 F:\C\Dev-Cpp\bin\main.cpp [Warning] character constant too long
for its type
May that cause any problems?
Thanks. Seems to be part of Markus Schroders answer. So I answered
there.
Your name sounds German. So if I'm right you may answer in German also
- as you wish.
Thanks. At the moment I just have a C++ specific question to this
problem. As soon as it is answered I will create a new thread there.
If I have problems any longer.
Thanks. At the moment I just have a C++ specific question to this
problem. As soon as it is answered I will create a new thread there.
If I have problems any longer.
@red floyd: Sorry, but I'm not able to answer to your answer directly.
I tried, but it was shown at the wrong place. So please excuse that.
Here's my answer:
Thanks. At the moment I just have a C++ specific question to this
problem. As soon as it is answered I will create a new thread there.
If I have problems any longer.
red floyd wrote: I want to call a GNU-Fortran-library from a GNU-C++ source. Is that possible at all? If yes, what is to be done to link the program?
What you're doing wrong is asking in the wrong group. I suspect you'd be able to get a lot better help in the newsgroup gnu.g++.help
This is an example of the advice "if you can't help, don't bounce". The
answer might very probably be the extern "C", which is an example of an
on-topic answer to a questionable question.
The f2c compiler might also help.
--
Phlip http://www.greencheese.org/ZeekLand <-- NOT a blog!!!
In message <11**********************@j33g2000cwa.googlegroups .com>,
Cottonwood <go****@c-d-j.de> writes Thanks. I did. Here is the new source:
#include <windows.h> #include <conio.h> extern "C" void qqopen(int*,int*,char*); extern "C" void qqpoint(int*,int*); extern "C" void qqline(int*,int*); extern "C" void qqclose(); int main() { int ix, iy;
ix=1201; iy=1001; qqopen(ix*,iy*,'.\\qqtest.bmp'*);
What's that supposed to mean? ITYM qqopen(&ix, &iy, ".\\qqtest.bmp");
ix=10;iy=10; qqpoint(ix*,iy*); ix=1190; iy=990; qqline(ix*,iy*); qqclose();
}
But now I get messages like this:
12 F:\C\Dev-Cpp\bin\main.cpp expected primary-expression before ',' token
Not surprising. " qqopen(ix*,iy*,'.\\qqtest.bmp'*) ; " isn't valid C++
syntax. And I get this message (as before):
12:16 F:\C\Dev-Cpp\bin\main.cpp [Warning] character constant too long for its type
In C++, string constants are enclosed in double-quotes. May that cause any problems?
Just a few ;-)
--
Richard Herring This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: Carl |
last post by:
"Nine Language Performance Round-up: Benchmarking Math & File I/O"
http://www.osnews.com/story.php?news_id=5602
I think this is an unfair comparison! I wouldn't dream of developing a
numerical...
|
by: Nick Coghlan |
last post by:
Thought some folks here might find this one interesting. No great revelations,
just a fairly sensible piece on writing readable code :)
The whole article:...
|
by: Bob Helber |
last post by:
I've got a perl script with a system command, within a for loop, that
calls a FORTRAN program. For one of the iterations of the for loop the
FORTRAN program quits with an error due to bad input. ...
|
by: Dennis Kernighan |
last post by:
On Microsoft's pages there is an example of making Fortran call from
C++, see http://tinyurl.com/2692f . If I put C code in the test.c and
Fortran code in FORSUBS.FOR and press F5 in C++, I get...
|
by: Cyde Weys |
last post by:
I'm currently working on converting a simulator program from Visual
Basic 6.0 to Visual C++ .NET. I've figured out most of the stuff, but
there's still one thing I haven't gotten to and I've never...
| |
by: Matt |
last post by:
I have 2 questions:
1. strlen returns an unsigned (size_t) quantity. Why is an unsigned
value more approprate than a signed value? Why is unsighned value less
appropriate?
2. Would there...
|
by: Cottonwood |
last post by:
I want to call a C module from a Fortran program. Whatever I tried -
the linker could not find the C module. I know about the leading
underscore and switched even that off. I abstracted everything...
|
by: hanhaner |
last post by:
hey, there
I am new to Python and C++. Now I am trying to call some fortran subroutines in python code. I was told the good way is to write a c++ interface. I am not quite sure how to do it.
...
|
by: Luna Moon |
last post by:
Hi all,
As a C/C++ programmer, there are a few reasons to use Fortran:
(1) Fortran is very similar to Matlab and easy to port;
(2) Fortran has support of complex numbers and vectorized numbers...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers,...
| |
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
| |
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...
| |