Passing Structures As Arguments For A Fortran DLL?
Sep 11, 2010
I could pass a User Defined Type data structure to a Fortran DLL, that contained Short Integers, Singles (real variables) and a series of Fixed Arrays, both short integers and real variables.I am upgrading my VB6 app to Visual Studio 2008 - VB, and I want to keep the same data structures as they are used in about 300,000 lines of code.I modified the Data Structure as follows below, making sure it is of Explicit Layout, since I want the position of all variables to be the same both in VS 2008 and Fortran.Two problems arise:
1) if the LayoutKind is Explicit, such as in the example below (only part of the data structue is shown, where "..." indicate part of omitted data structure members), whenever I try to run my app, I get the following exception message, which indicates that the VBFixedArray declared at Offset 154 is in conflict with some other object, unnamed by the exception handler.
Message="Could not load type 'MyApp.SomeStruct' from assembly 'MyApp, Version=1.32.3906.33480, Culture=neutral, PublicKeyToken=null' because it contains an object field at offset 154 that is incorrectly aligned or overlapped by a non-object field."
Source="MyApp"
TypeName="MyApp.SomeStruct"
StackTrace:[code]....
2) if the LayoutKind is Sequential, the app will start, all the data preceding the VBFixedArrays is passed to the Fortran Dll without problem; everything that follows the VBFixedArray is garbled and unusable. To check this, I have made a Fortran subroutine in the Dll to which I pass both the Data Structure and a vector; in the Fortran subroutine, all the elements of the data structure are equivalenced to individual positions in the vector; upon return from the Fortran subroutine, I compare the elements of the data structure and those of the vector.
The problem here is that the Data Structure contains some 1300 names, and is used extensively in the application, as it is the way to pass elegantly a lot of data pertaining to a mathematical model with only one adress when accessing the Fortran Dll, in which the computing engine lies.
<StructLayout
<StructLayout(LayoutKind.Explicit, Size := 9226, CharSet := CharSet.Ansi)>
Public Structure SomeStruct[code]......
View 5 Replies
ADVERTISEMENT
Feb 1, 2010
I have a DLL written in fortran that I know works because I am getting it from a working software package that we use daily. I am trying to call it from anything but am having problems i believe with passing the correctly formatted arguments in and out of it, so i decided to try and access it from a VB program. I chose VB because I have contacted the developer of the software package we are using and he gave me his DLL function call in VB6, even though he is not allowed to show me the FORTRAN source.
Problem is (perhaps, i think) that I am writing in VB.NET, which has different data types than VB6. Can anyone see why i am am having problems. The error i get upon running is: "AccessViolationException was unhandled: Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
[Code]...
View 3 Replies
Mar 16, 2011
It says that I can't have structures as optional arguments.That's really annoying for my program. Isn't there any way to circumvent this?
Sub fa(Optional ByVal colz As System.Drawing.Color = Color.AliceBlue)
End Sub
This example cannot compile
View 14 Replies
Apr 25, 2010
i have a main module called "main", within the module i have declared 2 other modules "Interfacing" and "Espec", within these 2 submodules they both have a structure called "coord" which is identical. The problem is that when i have defined a function in one module with "coord" as type and try to assign a value in the other module with coord type i get error message "Value of type Main.Interfacing.Coord cannot be converted to Main.Espec.Coord", so basically how could i pass that structure?
[Code]...
View 3 Replies
Nov 7, 2011
I was wondering if there was a way to write fortran or to integrate fortran to Visual Basic .net 2010..Maybe with adding a refferance or something? what options are available?
View 5 Replies
Feb 2, 2010
I have a VB.net console app and I am opening a function in a dll written in fortran. I am passing 3 arrays through the function by reference. When they come back out the otherside they ahve all tunred to arrays of only one element And that element is 0.I read on the internet somewhere that when doing this kind of thing it is a good idea to only pass the first element of the array into the function.I tried changing my function declaration to accepting single elements rather than single dimensional arrays, and now the arrays are the same length before and after the function call, but they don't seem to be changing at all, so i'm not sure that this is working
View 1 Replies
Sep 29, 2008
I have written a ActiveX DLL in VB 6 which is like -
[Code]...
When I do this everything works fine and I am able to pass value to dll. I am passing two structures arrays and other single values like int and double etc. So far so good. But when I insert this code in another application (created in same vb.net 2005) where I actually intent it to use then i get the following error -
System.Runtime.InteropServices.SafeArrayTypeMismatchException
Specified array was not of the expected type.
I am puzzled as to why is this happening. I checked basic settings and they are same. In short the code works if i create a new project and go on but does not work and gives error if I insert in an existing application's code where i wanna use. To test I created a dll without passing structure arrays and then it worked in that application.
[Code]...
View 1 Replies
Aug 3, 2011
I am having a problem figuring this out. The text that is bold is where the problem is.
Imports Microsoft.Win32
Console.WriteLine(WMILookup("Win32_Bios","SerialNu mber"))
Private Function WMILookup(ByVal WMIClass as String,ByVal WMIItem as String) As String
[Code].....
View 2 Replies
Dec 25, 2010
I'm currently using the code:
Public
ReplaceThread As
System.Threading.Thread<br/>
[code].....
View 2 Replies
Aug 21, 2009
I want to pass text into an exe file which is named say.exe. It can convert to phonemes using the command line -lp. after the say.exe..
I need to allow user input text and then convert the text and save it in a text file which would be created as it converts...
find below the code for initiating a process below...
' passing the text saved in the file into the application
Dim ProcessInfo As New ProcessStartInfo("C:Program FilesDECtalkUSsay.exe", UserInput)
[Code]....
View 5 Replies
Feb 11, 2010
topfunction(myarray, yourarray)
dim function topfunction(byval array1() as integer, byval array2() as integer)
dim function subfunction1(byval array1() as integer)
[code]....
View 2 Replies
Jan 8, 2010
I have an application that I start from a sub main. Pass it some arguments and then open a form. Very similar to the log in form. Inside of this application I use 2 dll's. One I had written and another from a vendor. When I run my app from the IDE everything closes down ok. When I run my application from another application(similar to the command line start) the image of the log in box stays on the screen, until I move another window that does a screen redraw.
The process is stopped, by looking at the running process's on the computer. My next question, the dll that I wrote for it is a vb.net class(dll)... I do not have a destructor in it.. I just left the Protected Overrides Sub Finalize() alone which contains MyBase.Finalize() With my dll, could that be causing the window to keep itself drawn? Due to the two dll's connecting to device only within our network. Not sure if remote desktop or citrix causes a screen redraw.
View 7 Replies
Feb 8, 2010
Also, I'm sure I explained myself well enough, but just in case I didn't, I've attached a jpg with form/control examples w/code
View 3 Replies
Mar 27, 2009
I can connect when I go into command prompt manually and type: rasdial one username password
This will work. It will dial and connect.
Now when I try doing this programmatically it will not work. It doesn't seem to be passing the arguments I've specified:
[Code].....
View 4 Replies
Oct 25, 2009
I am trying to pass arguments to my wintv.exe program using the process.start command but I am getting errors...Here is one example that starts Wintv but the program does not begin to record and Wintv throws up a bunch of errors and quits.
Code:
Process.Start("c:progra~1wintvWinTV.EXE", " -c1 -ntod -startr:WinTV_(0).mpg -qdef -limit:3600 -mute")
[code]....
View 2 Replies
Apr 18, 2009
I'm running some command line programs through my app and I have to pass some parameters to the command line app.I'm launching the command line with Start.Process and using StartInfo.Arguments = "".The problem is that some of the parameters require me to pass quotes and when I put quotes into the compiler, it doesn't register it in the way I want it to.
View 3 Replies
Nov 30, 2010
I'm trying to use a string variable in StartInfo.Arguments of a process, but can't figure out the correct syntax.
[code]...
View 1 Replies
Mar 4, 2011
I have an ASP.NET MVC controller action with the following VB.NET signature:
[Code]...
If I'm trying to send an Ajax POST in jQuery to the ClosestCities action, what should my request look like? When I use the following code to POST to this action, in the debugger window of VS, position.longitiude and position.latitude are equal to 0.0 (0D):
[Code]...
View 2 Replies
Jan 19, 2010
I have a single instance database app that emails out notifications. I would like to add a link in the emails that when clicked would open up the app and go to the section of the program that its supposed to go to. I implemented my own URL protocol so that links starting with my codewords get passed to my EXE. So far so good. I then parse the URL and pull the keyword and identifier out to open that section of the program. So if a user clicks a link like this:
MyApp:LoadCompany?ID=323
My application will start, it will grab the arguments (LoadCompany?ID=323), pass this to my load company routine and then load up company ID 323. Works great.
Now the issue is if the program is already open I still want the links to work but since it's a single instance app it just closes the second app. How can I add something ot the app to watch for this or receive a message from the second app? I know I will need to check status of what I'm doing and make sure things are saved, check security, etc but I can get all that done easily enough. I've found some examples online but none really did what I wanted them to.
View 8 Replies
Jan 22, 2011
I used to program with Visual Basic 6, so I have alot of old programs that I'm updating, plus I'm learning the new VB2008 methods. I'm writing a program that replaces the old "BitBlit" function which is no longer supported by Visual Basic 2008. It involves three picture boxes, one holds the sprite bitmap, a second holds the mask (silhouette) of the sprite bitmap, and a third has a background image.
[Code]...
View 3 Replies
Jan 20, 2009
I have a structure called 'Scheme' and in my program I want (ideally) an ArrayList of 'Schemes' (so i can add, remove schemes etc.). However, within the 'Scheme' structure, I want to have an ArrayList of 'Item''Item' is another structure. Are there any solutions out there for iterating through these arrays quite easily?
How can I easily add multiple Items to a Scheme and mutliple Schemes to my Scheme array. Code is below. When I try to add Items to a Scheme, I get the 'Object not set to a reference of an object, try the 'New' keyword', but you cannot declare 'New' keywork within a structure.
[Code]...
View 4 Replies
Jun 2, 2010
I read in the Book "Mastering Microsoft Visual Basic 2008" about "User-Defined data types".The example given is creating a Structure as follows.I wanted to check that so I wrote all the code given; I used a TextBox and a Button for this.(I didn't include the "CheckDate" here; that is in the book)
Structure CheckRecord
Dim CheckNumber As Integer
[code]....
The problem is this does work.What I get is "00000". and I found out that the "Checks(4)" Array does hold any value ie: on keeping the cursor over that, it shows "CheckAmount 0.0, CheckNumber 0 , CheckPaidTo Nothing ".
View 1 Replies
Oct 5, 2006
I have several subroutines which are written in FORTRAN.
1) how I need to compile the FORTRAN subroutines?
2) what I need to do within VB 2005 to call these FORTRAN subroutines within the VB 2005 code?
View 1 Replies
Nov 18, 2010
I am running one fortran exe in .net application(calling from command line with the help of system diagnostic process). If we directly click on fortran exe, it shows inputs to enter for fortran in command window, after input entered it gets executed. We want same behaviour but want to run fortran exe from .net application, If we click on button in vb.net form, this exe should get called and should show inputs to enter on the command line, once inputs entered it should execute. How to achieve this with .net application? Right now, after clicking on button in vb.net form, exe get's opened in command window, but it is blank, and gets hanged. [code]
View 1 Replies
May 11, 2011
have problem with calling a Fortran DLL from VB.net Program. The VB program provide the GUI while the Fortran DLL does the calculations.The Fortran DLL opens and reads from data files supplied by the VB program. however, DLL program displays a message that says it can not open the file.
View 1 Replies
Nov 18, 2010
I am running one fortran exe in .net application(calling from command line with the help of system diagnostic process).If we directly click on fortran exe, it shows inputs to enter for fortran in command window, after input entered it gets executed.We want same behaviour but want to run fortran exe from .net application,If we click on button in vb.net form, this exe should get called and should show inputs to enter on the command line, once inputs entered it should execute. How to achieve this with .net application?
Right now, after clicking on button in vb.net form, exe get's opened in command window, but it is blank, and gets hanged.Below is the error forrtl: error (200): program aborting due to window-CLOSE event Image PC Routine Line[code]....
View 1 Replies
May 27, 2010
I have a subroutine that was written in fortran that I need to call from VB.NET where all of my other functions are written. I did not write the fortran, and hardly know fortran. I am getting the below exception on my dll function call and don't know how to fix it. I wonder if it is due to incongruent variable lengths? I have the source for my fortran and compiled it using the g95 compiler. I have tried compiling it with a flag on which is supposed to force all of the reals to 32 bits (-r4). It weirds me out that you don't seem to be required to initialize variables before use in fortran. I thought it was supposed to be a ridged language.
[Code]...
View 2 Replies
Jul 14, 2011
I am trying to call a fortran DLL from VB.NET. Fortran function requires two character strings to be passed from VB to fortran. I am able to run the code with a change after receiveing a AccessViolationException error. I dont understand why it worked can
some one whose professional explain me the difference. Here I am attaching the codes for reference
[Code]...
View 1 Replies
Jan 15, 2010
I am calling a Fortran dll from vb.net. It works when I call it it one time only. When I put that in a loop, it works for the first time and second time it quits the program. How can I run this in a loop?
View 4 Replies
Apr 20, 2010
I have 2 source codes in fortrran (I have not written them). I visualized these codes by linking them to VB2005.when I excuate the VB.exe, when VB calls one of these DLLs, there is no problem, but in calling the other DLL, the DLL is executed but the VB.exe is closed and the interface page to the user goes out.
View 1 Replies