-
Notifications
You must be signed in to change notification settings - Fork 41
/
Copy pathc++_calls_c.html
175 lines (147 loc) · 4.36 KB
/
c++_calls_c.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
<html>
<head>
<title>
C++_CALLS_C - C++ Main Program Calls C Functions
</title>
</head>
<body bgcolor="#EEEEEE" link="#CC0000" alink="#FF3300" vlink="#000055">
<h1 align = "center">
C++_CALLS_C <br> C++ Main Program Calls C Functions
</h1>
<hr>
<p>
<b>C++_CALLS_C</b>
is a directory of C++ programs which
illustrates how a C++ program can call a C function.
</p>
<p>
For this example, the KRONROD package is used. Note that the KRONROD
library is available in C++ and in C, so this example is not
created out of necessity (the C++ main program could have simply called
the C++ version of KRONROD). Instead, it is intended as an example of
how to do this when you have to (you don't have a C++ version of the
routines you want to use.)
</p>
<p>
When calling a C function from a C++ function, there are
some simple things that may be enough to guarantee success.
<ul>
<li>
the C++ code should declare interfaces to the C functions
using the "extern C" qualifier, as in
<pre>
extern "C"
{
void kronrod ( int n, double eps, double x[], double w1[], double w2[] );
void timestamp ( );
}
</pre>
</li>
</ul>
</p>
<h3 align = "center">
Licensing:
</h3>
<p>
The computer code and data files described and made available on this web page
are distributed under
<a href = "../../txt/gnu_lgpl.txt">the GNU LGPL license.</a>
</p>
<h3 align = "center">
Languages:
</h3>
<p>
<b>C++_CALLS_C</b> is available in
<a href = "../../cpp_src/c++_calls_c/c++_calls_c.html">a C++ version</a> and
<a href = "../../f77_src/f77_calls_c/f77_calls_c.html">a FORTRAN77 version</a> and
<a href = "../../f_src/f90_calls_c/f90_calls_c.html">a FORTRAN90 version</a> and
<a href = "../../m_src/matlab_calls_c/matlab_calls_c.html">a MATLAB version</a>.
</p>
<h3 align = "center">
Related Data and Programs:
</h3>
<p>
<a href = "../../cpp_src/c++_calls_f77/c++_calls_f77.html">
C++_CALLS_F77</a>,
C++ programs which
call a FORTRAN77 subroutine.
</p>
<p>
<a href = "../../cpp_src/c++_calls_f90/c++_calls_f90.html">
C++_CALLS_F90</a>,
C++ programs which
call a FORTRAN90 subroutine.
</p>
<p>
<a href = "../../c_src/kronrod/kronrod.html">
KRONROD</a>,
a C library which
can compute a Gauss and Gauss-Kronrod pair of quadrature rules
of arbitrary order,
by Robert Piessens, Maria Branders.
</p>
<p>
<a href = "../../cpp_src/kronrod/kronrod.html">
KRONROD</a>,
a C++ library which
can compute a Gauss and Gauss-Kronrod pair of quadrature rules
of arbitrary order,
by Robert Piessens, Maria Branders.
</p>
<p>
<a href = "../../cpp_src/mixed/mixed.html">
MIXED</a>,
C++ programs which
call a function written in another programming language.
</p>
<h3 align = "center">
Source Code:
</h3>
<p>
<b>KRONROD</b> is the C source code for the KRONROD library.
It should be essentially unchanged from the standard version.
<ul>
<li>
<a href = "kronrod.c">kronrod.c</a>, the source code;
</li>
<li>
<a href = "kronrod.h">kronrod.h</a>, the include file;
</li>
</ul>
</p>
<p>
<b>KRONROD_PRB</b> is the C++ source code for the main program.
Some changes have been made from the standard version in order
to adjust for the fact that we are calling a FORTRAN77 subroutine.
<ul>
<li>
<a href = "kronrod_prb.cpp">kronrod_prb.cpp</a>;
</li>
</ul>
</p>
<h3 align = "center">
Examples and Tests:
</h3>
<p>
<ul>
<li>
<a href = "kronrod_prb.sh">kronrod_prb.sh</a>,
commands to compile, link, load and run the program;
</li>
<li>
<a href = "kronrod_prb_output.txt">kronrod_prb_output.txt</a>,
the output file;
</li>
</ul>
</p>
<p>
You can go up one level to <a href = "../cpp_src.html">
the C++ source codes</a>.
</p>
<hr>
<i>
Last revised on 18 March 2014.
</i>
<!-- John Burkardt -->
</body>
</html>