473,588 Members | 2,471 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Error calling Fortran function from C# using

Hi,

I'm working on a project that requires us to call some mathematical
functions that are in a Fortran dll. I'm trying to call the function
using P/Invoke, but I keep getting a null reference exception, anyone
have any ideas? Here's my code:

[DllImport(@"Tre ndFit.dll", EntryPoint="Tre ndFit")]
public static extern int trendfit(
int lNPt,
double dblX,
double dblY,
double dblSdY,
int lNCoeff,
double dblCoeff,
double dblV,
double dblVF);

private void button1_Click(o bject sender, System.EventArg s e)
{
int lNPt = 30;
double dblX = 38222.566446759 3;
double dblY = 19.846926035825 2;
double dblSdY = 1;
int lNCoeff = 2;
double dblCoeff = 0;
double dblV = 0;
double dblVF = 0;

int result = trendfit(lNPt, dblX, dblY, dblSdY, lNCoeff, dblCoeff,
dblV, dblVF);

// result should be 0
textBox1.Text = result.ToString ();
}
Many thanks.
*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!
Nov 16 '05 #1
6 1618
Maybe wrong calling convention? You can use a special Attribute to specify
it.
Or maybe you have to call a special Init routine of this library to set some
internal variables.
A null reference exception from native code is a hint that a page fault
occured in the native code like a wuninitialized pointer or similar..

"jacob ya" <ja*****@netzer o.net> schrieb im Newsbeitrag
news:uB******** ********@TK2MSF TNGP11.phx.gbl. ..
Hi,

I'm working on a project that requires us to call some mathematical
functions that are in a Fortran dll. I'm trying to call the function
using P/Invoke, but I keep getting a null reference exception, anyone
have any ideas? Here's my code:

[DllImport(@"Tre ndFit.dll", EntryPoint="Tre ndFit")]
public static extern int trendfit(
int lNPt,
double dblX,
double dblY,
double dblSdY,
int lNCoeff,
double dblCoeff,
double dblV,
double dblVF);

private void button1_Click(o bject sender, System.EventArg s e)
{
int lNPt = 30;
double dblX = 38222.566446759 3;
double dblY = 19.846926035825 2;
double dblSdY = 1;
int lNCoeff = 2;
double dblCoeff = 0;
double dblV = 0;
double dblVF = 0;

int result = trendfit(lNPt, dblX, dblY, dblSdY, lNCoeff, dblCoeff,
dblV, dblVF);

// result should be 0
textBox1.Text = result.ToString ();
}
Many thanks.
*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!

Nov 16 '05 #2
Please respond if that is solving your problem, because Iam interested if my
ideas were correct.

"jacob ya" <ja*****@netzer o.net> schrieb im Newsbeitrag
news:uB******** ********@TK2MSF TNGP11.phx.gbl. ..
Hi,

I'm working on a project that requires us to call some mathematical
functions that are in a Fortran dll. I'm trying to call the function
using P/Invoke, but I keep getting a null reference exception, anyone
have any ideas? Here's my code:

[DllImport(@"Tre ndFit.dll", EntryPoint="Tre ndFit")]
public static extern int trendfit(
int lNPt,
double dblX,
double dblY,
double dblSdY,
int lNCoeff,
double dblCoeff,
double dblV,
double dblVF);

private void button1_Click(o bject sender, System.EventArg s e)
{
int lNPt = 30;
double dblX = 38222.566446759 3;
double dblY = 19.846926035825 2;
double dblSdY = 1;
int lNCoeff = 2;
double dblCoeff = 0;
double dblV = 0;
double dblVF = 0;

int result = trendfit(lNPt, dblX, dblY, dblSdY, lNCoeff, dblCoeff,
dblV, dblVF);

// result should be 0
textBox1.Text = result.ToString ();
}
Many thanks.
*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!

Nov 16 '05 #3
I tried all of the different calling conventions available and none of
them worked. I've also tried passing all of the parameters by reference
which is what I think I need to do because I have the source code from a
VB6 app that calls the same DLL and it passes all values ByRef. The VB6
app doesn't call any Init functions or anything like that, so I don't
believe that is the issue. I think that datatype mismatches between VB6
and VB.NET/C# could be an issue as well. I'll let you know when I get
it working.

*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!
Nov 16 '05 #4
I changed all my parameters to pass by reference and the call to the
function actually works, but the NullReferenceEx ception is now being
thrown once the calling function terminates. This seems like a cleanup
issue to me. I'm going to keep investigating, but if anyone has
experienced this same problem or has a solution, your advice would be
much appreciated. Thanks.

*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!
Nov 16 '05 #5
IIRC, in VB an int was only 16bit so you could try to pass short instead of
int.

"jacobya" <jacobya@NOSPAM netzeroDOTnet> schrieb im Newsbeitrag
news:u1******** ********@TK2MSF TNGP14.phx.gbl. ..
I changed all my parameters to pass by reference and the call to the
function actually works, but the NullReferenceEx ception is now being
thrown once the calling function terminates. This seems like a cleanup
issue to me. I'm going to keep investigating, but if anyone has
experienced this same problem or has a solution, your advice would be
much appreciated. Thanks.

*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!

Nov 16 '05 #6
Actually, the VB version was using long, so I already accounted for
that, but thanks.

*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!
Nov 16 '05 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

12
2888
by: Bigdakine | last post by:
I don't know if this is the right forum for this, and if not please suggest one which fits. I have to call a fortran sub routine from a C main program. The fortran subroutine statement is wload(starttime, duration, station, component, dataray, nsamp, calib, srate, samplength, datadir)
9
3813
by: travisperkins03 | last post by:
Hi, I have read somewhere that C code sometimes cannot be compiled to be as efficient as FORTRAN, eg for matrix multiplication, because a C compiler cannot make the assumptions about arrays that a FORTRAN compiler can. But I don't understand the example, not least because I don't understand FORTRAN. I also don't understand why it is more efficient in this case for a compiler to choose the order of evaluation (or whatever it is that it...
2
2816
by: Ray J. | last post by:
I have a C++ program written and compiled on Solaris 8 with gcc. With gcc lets me compile fortran code along with the C++ program to be able to call the fortran code as a subroutine. The specifications for this project have changed and I am porting the C++ code to Visual C++. Is there a way to call fortran code from a C++ program compiled with Visual C++?
10
8344
by: Tyler | last post by:
Hello All: After trying to find an open source alternative to Matlab (or IDL), I am currently getting acquainted with Python and, in particular SciPy, NumPy, and Matplotlib. While I await the delivery of Travis Oliphant's NumPy manual, I have a quick question (hopefully) regarding how to read in Fortran written data. The data files are not binary, but ASCII text files with no formatting and mixed data types (strings, integers,...
3
5653
by: Alexander Eisenhuth | last post by:
Hello, Ctrl+C is not passed to the interpreter (i guess it) while I'm executing a script. Instead i get: forrtl: error (200): program aborting due to control-C event If I start python in interactive mode Ctrl+C is passed: bash-3.2$ python Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) on win
2
4427
by: luis | last post by:
I'm using ctypes to call a fortran dll from python. I have no problems passing integer and double arryas, but I have an error with str arrys. For example: ..... StringVector = c_char_p * len(id) # id is a list of strings Id_dat=StringVector() for i in range(len(Id)): ....Id_dat=id
1
23378
by: urkel | last post by:
Hi everyone, I critically need help to solve this problem related to pointer in C++ Basically, I have a C/C++ program "retardselfenerg" calling a Fortran 90 subroutine "surfGF4.f90". i am so doubtful if my definitions of pointer variables and their use in calling function are correct. #include<bla bla bla......h> #include<bla bla bla.h> double surfGF4_(double*, double*, double*, double*, double*, double*, double*, double*, double*); ...
3
1798
by: =?Utf-8?B?TWFyZWs=?= | last post by:
Hi As well as trying to call a fortran dll with a structure parameter from a C# front end, we are trying to do this using AssemblyBuilder and MethodInfo to do it dynamically. Ultimately this will be done using a configuration file, but in the first instance I am trying to do this using code. The FORTRAN structure looks like this: TYPE Type1 ! Scalars plus fixed dimension arrays SEQUENCE
0
1432
by: Gabriel Genellina | last post by:
En Sun, 21 Sep 2008 19:42:10 -0300, Blubaugh, David A. <dblubaugh@belcan.comescribió: Below there is a transcript of a compile session. I've used a somewhat old version of mingw and g77, scipy 1.1.1, python 2.5.2: C:\TEMP\for>dir /b dscal.for
0
7862
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 effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
8228
Oralloy
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, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
8357
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
7987
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
8223
tracyyun
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 protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
6634
agi2029
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, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
5398
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 then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
3847
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 last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
1
1459
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.