<html>
<body>
At 01:23 AM 6/29/2007, you wrote:<br>
<blockquote type=cite class=cite cite="">I have tried to use CoinMP.Dll
from Visual Basic. The follow declaration<br>
of function had created:<br><br>
Public Declare Function CoinInitSolver Lib &quot;CoinMP.dll&quot; (ByVal
LicenseStr<br>
As String) As Long<br><br>
Then I have tried to call the function:<br>
&nbsp;&nbsp;&nbsp; Dim s As String<br>
&nbsp;&nbsp;&nbsp; s = Chr(0)<br>
&nbsp;&nbsp;&nbsp; CoinInitSolver s<br>
But error &quot;Bad Dll calling conversion&quot; had happened... Why? The
CoinMP.Dll<br>
was downloaded coin-or.org site...</blockquote><br>
What version of (MS) Visual Basic are you using? There have been
significant<br>
changes. You mention Excel? So, maybe it is Visual Basic for
applications?<br><br>
I have been trying some of the same things, but at least I got beyond
this <br>
point.<br><br>
For strings, you have to know that C/C++ strings are different from
anything<br>
in Visual Basic. You will have to convert them from permanent,
Unicode<br>
system strings to arrays of system Byte before calling the dll.<br><br>
(In addition, if your VB is version 6, or earlier as it appears to be,
there have<br>
been big changes in the Visual Basic language since then.)<br><br>
The following is Visual Basic 2005:<br>
<blockquote type=cite class=cite cite=""><font face="Arial, Helvetica">
&nbsp;&nbsp;
&lt;DllImport(</font><font face="Arial, Helvetica" color="#A31515">
&quot;CoinMP.dll&quot;</font><font face="Arial, Helvetica">)&gt; _<br>
&nbsp;&nbsp;&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">Function</font>
<font face="Arial, Helvetica">
CoinInitSolver(</font><font face="Arial, Helvetica" color="#0000FF">
ByVal</font><font face="Arial, Helvetica"> LicenseStr()
</font><font face="Arial, Helvetica" color="#0000FF">As</font>
<font face="Arial, Helvetica">
</font><font face="Arial, Helvetica" color="#0000FF">Byte</font>
<font face="Arial, Helvetica">)
</font><font face="Arial, Helvetica" color="#0000FF">As</font>
<font face="Arial, Helvetica">
</font><font face="Arial, Helvetica" color="#0000FF">Integer<br>
</font><font face="Arial, Helvetica">&nbsp;&nbsp;&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">End</font>
<font face="Arial, Helvetica">
</font><font face="Arial, Helvetica" color="#0000FF">Function</blockquote>
<br>
</font><blockquote type=cite class=cite cite="">
<font face="Arial, Helvetica">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">Dim</font>
<font face="Arial, Helvetica"> blnkStr(), nameStr()
</font><font face="Arial, Helvetica" color="#0000FF">As</font>
<font face="Arial, Helvetica">
</font><font face="Arial, Helvetica" color="#0000FF">Byte<br>
</font><font face="Arial, Helvetica">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; blnkStr =
string2ByteC(</font><font face="Arial, Helvetica" color="#A31515">
&quot;&quot;</font><font face="Arial, Helvetica">)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nameStr =
string2ByteC(</font><font face="Arial, Helvetica" color="#A31515">
&quot;CoinMPTest&quot;</font><font face="Arial, Helvetica">)<br><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CoinInitSolver(blnkStr)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hProb =
CoinCreateProblem(nameStr)</font>
<font face="Arial, Helvetica" color="#0000FF"></blockquote><br>
</font>The conversion routine I think I got from Microsoft
somewhere<br><br>
<br>
<blockquote type=cite class=cite cite=""><font face="Arial, Helvetica">
&nbsp;&nbsp;&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">Function</font>
<font face="Arial, Helvetica">
string2ByteC(</font><font face="Arial, Helvetica" color="#0000FF">
ByVal</font><font face="Arial, Helvetica"> instring
</font><font face="Arial, Helvetica" color="#0000FF">As</font>
<font face="Arial, Helvetica">
</font><font face="Arial, Helvetica" color="#0000FF">String</font>
<font face="Arial, Helvetica">)
</font><font face="Arial, Helvetica" color="#0000FF">As</font>
<font face="Arial, Helvetica">
</font><font face="Arial, Helvetica" color="#0000FF">Byte</font>
<font face="Arial, Helvetica">()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">Dim</font>
<font face="Arial, Helvetica"> i, n
</font><font face="Arial, Helvetica" color="#0000FF">As</font>
<font face="Arial, Helvetica">
</font><font face="Arial, Helvetica" color="#0000FF">Integer<br><br>
</font><font face="Arial, Helvetica">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font><font face="Arial, Helvetica" color="#008000">' construct byte
array same length as input string<br>
</font><font face="Arial, Helvetica">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n = instring.Length<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">Dim</font>
<font face="Arial, Helvetica"> s2b(n)
</font><font face="Arial, Helvetica" color="#0000FF">As</font>
<font face="Arial, Helvetica">
</font><font face="Arial, Helvetica" color="#0000FF">Byte</font>
<font face="Arial, Helvetica">
</font><font face="Arial, Helvetica" color="#008000">' one more than
input for null term<br><br>
</font><font face="Arial, Helvetica">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font><font face="Arial, Helvetica" color="#008000">' convert each char
in string to byte <br>
</font><font face="Arial, Helvetica">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font><font face="Arial, Helvetica" color="#008000">' Mid function is 1
based, but array ref is 0 based<br>
</font><font face="Arial, Helvetica">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">For</font>
<font face="Arial, Helvetica"> i = 1
</font><font face="Arial, Helvetica" color="#0000FF">To</font>
<font face="Arial, Helvetica"> n<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s2b(i
- 1) =
</font><font face="Arial, Helvetica" color="#0000FF">CByte</font>
<font face="Arial, Helvetica">(Asc(Mid(instring, i, 1)))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">Next<br>
</font><font face="Arial, Helvetica">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s2b(n) = 0
</font><font face="Arial, Helvetica" color="#008000">' C style null
terminator<br><br>
</font><font face="Arial, Helvetica">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string2ByteC = s2b<br><br>
&nbsp;&nbsp;&nbsp;
</font><font face="Arial, Helvetica" color="#0000FF">End</font>
<font face="Arial, Helvetica">
</font><font face="Arial, Helvetica" color="#0000FF">Function</font>
</blockquote><br>
Anyway, as I said, I can get that far. The big problem I had<br>
was when I try to call CoinLoadProblem, because the C++ header<br>
includes two C arrays of strings<br>
<blockquote type=cite class=cite cite="">
<font face="Arial, Helvetica" color="#0000FF">char</font>
<font face="Arial, Helvetica">** ColNames,
</font><font face="Arial, Helvetica" color="#0000FF">char</font>
<font face="Arial, Helvetica">** RowNames);</font></blockquote><br>
and I haven't figured out how to create something like that or<br>
get around it.<br><br>
In C this is a multi-level array, and at the top level it is an
array<br>
of pointers. Managed code doesn't like pointers, it likes
references,<br>
and won't let you make an array of machine addresses (pointers).<br><br>
I have not yet solved this problem. I have been working on a <br>
wrapper for CoinMp.dll, but I haven't gotten it work, and I am <br>
frustrated trying to get the right answers from Microsoft.<br><br>
Let me know if you have a solution.<br><br>
LAT</body>
</html>