[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: RE: [Help-glpk] VBA/dll for Excel
From: |
Meketon, Marc |
Subject: |
RE: RE: [Help-glpk] VBA/dll for Excel |
Date: |
Tue, 18 Mar 2008 22:44:43 -0400 |
Wow, you did a lot of work. Thank you very much!
I'll be trying it out tomorrow night, and I'll let you know if it solves
the stack pointer address problem that I have.
-Marc
-----Original Message-----
From: glpk xypron [mailto:address@hidden
Sent: Tuesday, March 18, 2008 10:04 PM
To: Meketon, Marc
Cc: address@hidden; address@hidden
Subject: Re: RE: [Help-glpk] VBA/dll for Excel
Hello Marc,
the problem is due to GLPK being compiled with __cdecl calling
convention instead of __stdcall calling convention.
References:
http://www.geocities.com/yongweiwu/stdcall.htm
http://msdn2.microsoft.com/en-us/library/zxk0tw93.aspx
I have recompiled the DLL with compiler switch /Gz
Makefile_VC6_MT_DLL:
CFLAGS = /nologo /W3 /DGLP_TLS_CONFIG=2 /Gz
This gave me a lot of errors of type:
..\src\glplpx05.c(725) : error C2440: 'Function': 'int (__stdcall
*)(const void *,const void *)' cannot be converted to 'int (__cdecl
*)(cons
t void *,const void *)'
All functions passed to qsort must be explicitly declared as __cdecl,
e.g.
/* Define __cdecl for non-Microsoft compilers */
#if ( !defined(_MSC_VER) && !defined(__cdecl) )
#define __cdecl
#endif
static int __cdecl fcmp(const void *ptr1, const void *ptr2)
Concerned files are:
glpios03.c
glpios05.c
glpios06.c
glplpx05.c
The created library can be download at
ftp://glpk.dyndns.org/glpk/glpk_4_27.dll.stdcall.zip
The source changes can be viewed at
http://glpk.dyndns.org/viewvc/svn/glpk/glpk/branches/glpk-4.27-stdcall/
svn co svn://glpk.dyndns.org/glpk/glpk/branches/glpk-4.27-stdcall
ftp://glpk.dyndns.org/glpk/glpk-4.27-stdcall_201.tar.gz
With this library the following subroutine in VBA ran without errors:
Attribute VB_Name = "TestGLPK"
Option Explicit
Public Declare Function glp_create_prob Lib "c:\temp\glpk\glpk_4_27.dll"
() As Long
Public Declare Sub glp_set_prob_name Lib "c:\temp\glpk\glpk_4_27.dll"
(ByVal lp As Long, ByVal name As String)
Public Declare Sub glp_delete_prob Lib "c:\temp\glpk\glpk_4_27.dll"
(ByVal lp As Long)
Public Declare Function glp_get_prob_name Lib
"c:\temp\glpk\glpk_4_27.dll" (ByVal lp As Long) As Long
Private Declare Function SysAllocStringByteLen Lib "oleaut32" (ByVal
pwsz As Long, ByVal length As Long) As String
Sub test()
Dim i As Long
Dim l As Long
Dim lp As Long
Dim name As String
lp = glp_create_prob()
name = "MyProblem"
Call glp_set_prob_name(lp, name)
name = ""
l = glp_get_prob_name(lp)
name = SysAllocStringByteLen(l, 512)
name = Left$(name, InStr(name, Chr$(0)) - 1)
MsgBox name, vbOKOnly, "Name of the Problem"
Call glp_delete_prob(lp)
End Sub
Please, inform me if this solves You problem.
Best regards
Xypron
-------- Original-Nachricht --------
> Datum: Tue, 18 Mar 2008 14:46:42 -0400
> Von: "Meketon, Marc" <address@hidden>
> An: "Xypron" <address@hidden>
> CC: address@hidden
> Betreff: RE: [Help-glpk] VBA/dll for Excel
>
>
> I just tried glpk_4_27.dll from your distribution, and am having a
> difficulty.
>
> In the following VBA code,
>
> Dim lp As Long
>
> lp = glp_create_prob()
> glp_set_prob_name lp, "sample"
>
> The line "lp = glp_create_prob()" works, but the next line
> (glp_set_prob_name lp, "sample") gets an error message of "Bad DLL
> calling convention". Are these function calls based on the "stdcall"
> convention? I can get both lines to work in my version of the DLL
when
> I explicitly use the __stdcall __export modifiers. But I wanted to
test
> out your build with Visual Studio as opposed to mine with Turbo C++.
>
> -Marc
>
--
GMX startet ShortView.de. Hier findest Du Leute mit Deinen Interessen!
Jetzt dabei sein: http://www.shortview.de/address@hidden
----------------------------------------------------------------------------
This e-mail and any attachments may be confidential or legally privileged. If
you received this message in error or are not the intended recipient, you
should destroy the e-mail message and any attachments or copies, and you are
prohibited from retaining, distributing, disclosing or using any information
contained herein. Please inform us of the erroneous delivery by return e-mail.
Thank you for your cooperation.
----------------------------------------------------------------------------
- Re: [Help-glpk] VBA/dll for Excel, (continued)
- Re: [Help-glpk] VBA/dll for Excel, Andrew Makhorin, 2008/03/18
- Re: RE: [Help-glpk] VBA/dll for Excel, glpk xypron, 2008/03/18
- [Help-glpk] Hook needed in xfault(), glpk xypron, 2008/03/18
- Re: [Help-glpk] Hook needed in xfault(), Andrew Makhorin, 2008/03/19
- Re: [Help-glpk] Hook needed in xfault(), glpk xypron, 2008/03/19
- Re: [Help-glpk] Hook needed in xfault(), Andrew Makhorin, 2008/03/19
- Re: [Help-glpk] Hook needed in xfault(), glpk xypron, 2008/03/19
- Re: [Help-glpk] Hook needed in xfault(), Andrew Makhorin, 2008/03/19
RE: [Help-glpk] VBA/dll for Excel, Meketon, Marc, 2008/03/18
- Re: RE: [Help-glpk] VBA/dll for Excel, glpk xypron, 2008/03/18
- RE: RE: [Help-glpk] VBA/dll for Excel,
Meketon, Marc <=
- Re: [Help-glpk] VBA/dll for Excel, Andrew Makhorin, 2008/03/19
- Re: [Help-glpk] VBA/dll for Excel, glpk xypron, 2008/03/19
- Re: [Help-glpk] VBA/dll for Excel, Andrew Makhorin, 2008/03/19