Click here to Skip to main content
15,877,384 members
Home / Discussions / C#
   

C#

 
GeneralRe: Printing in C# using built in printer fonts Pin
Luc Pattyn27-Oct-09 9:56
sitebuilderLuc Pattyn27-Oct-09 9:56 
GeneralRe: Printing in C# using built in printer fonts Pin
Jörgen Sigvardsson27-Oct-09 10:02
Jörgen Sigvardsson27-Oct-09 10:02 
GeneralRe: Printing in C# using built in printer fonts Pin
Luc Pattyn27-Oct-09 10:18
sitebuilderLuc Pattyn27-Oct-09 10:18 
GeneralRe: Printing in C# using built in printer fonts Pin
Jörgen Sigvardsson27-Oct-09 10:21
Jörgen Sigvardsson27-Oct-09 10:21 
QuestionHow to call a .dll written in unmanaged C++ from C# and pass structs to and from? [Solved] Pin
CircuitDoc27-Oct-09 8:05
CircuitDoc27-Oct-09 8:05 
AnswerRe: How to call a .dll written in unmanaged C++ from C# and pass structs to and from? Pin
Luc Pattyn27-Oct-09 8:28
sitebuilderLuc Pattyn27-Oct-09 8:28 
GeneralRe: How to call a .dll written in unmanaged C++ from C# and pass structs to and from? Pin
CircuitDoc27-Oct-09 8:58
CircuitDoc27-Oct-09 8:58 
GeneralRe: How to call a .dll written in unmanaged C++ from C# and pass structs to and from? Pin
Luc Pattyn27-Oct-09 9:17
sitebuilderLuc Pattyn27-Oct-09 9:17 
Hi,

CircuitDoc wrote:
All of the array instantiations is done on the C# side


that is nice.


I now have several comments:
1. I never had a ExecutionEngineException before. Most often a P/Invoke mistake yields an access violation of some kind.
2. I am not familiar with Array.Count() method; I would use Array.Length. And I would expect Count() to return an integer, so I don't see a need for Convert.ToUInt32() four times.
3. Your second parameter has ref although nothing in the C++ source justifies that. I would throw it out (twice).
4. In C/C++ a double* is a simple pointer to one or several doubles; in C# double[] is the reference to an array, that is not the same as a data pointer. You need to:
- replace all arrays by IntPtr types inside the structs;
- allocate the arrays outside the structs;
- pin or fix each of the arrays so they can't be moved around while native code is running; this takes either the fixed keyword and the unsafe keyword and compiler switch, or, my preference, the GCHandle class. An C# example follows:

public int ArrayHandle() {
    int dim=10000;
    int[] numbers=new int[dim];
    ...
    GCHandle handle=GCHandle.Alloc(numbers, GCHandleType.Pinned);
    int sum=SumArray(handle.AddrOfPinnedObject(), dim);
    handle.Free();
    return sum;
}


That should get you going. If and when it still fails, please show updated code and symptoms again.

Smile | :)

Luc Pattyn

I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages


modified on Tuesday, October 27, 2009 4:02 PM

AnswerRe: How to call a .dll written in unmanaged C++ from C# and pass structs to and from? [Solved] Pin
CircuitDoc29-Oct-09 7:48
CircuitDoc29-Oct-09 7:48 
QuestionPass string " Hello {0}" though MessageBox Pin
I Believe In GOD27-Oct-09 7:41
I Believe In GOD27-Oct-09 7:41 
AnswerRe: Pass string " Hello {0}" though MessageBox PinPopular
Luc Pattyn27-Oct-09 7:50
sitebuilderLuc Pattyn27-Oct-09 7:50 
GeneralRe: Pass string " Hello {0}" though MessageBox Pin
Keith Barrow27-Oct-09 7:56
professionalKeith Barrow27-Oct-09 7:56 
AnswerRe: Pass string " Hello {0}" though MessageBox Pin
0x3c027-Oct-09 7:50
0x3c027-Oct-09 7:50 
AnswerRe: Pass string " Hello {0}" though MessageBox Pin
Keith Barrow27-Oct-09 7:58
professionalKeith Barrow27-Oct-09 7:58 
AnswerRe: Pass string " Hello {0}" though MessageBox Pin
Abhishek Sur27-Oct-09 8:45
professionalAbhishek Sur27-Oct-09 8:45 
GeneralRe: Pass string " Hello {0}" though MessageBox Pin
I Believe In GOD27-Oct-09 10:18
I Believe In GOD27-Oct-09 10:18 
GeneralRe: Pass string " Hello {0}" though MessageBox Pin
Abhishek Sur27-Oct-09 10:20
professionalAbhishek Sur27-Oct-09 10:20 
AnswerRe: Pass string " Hello {0}" though MessageBox Pin
Mirko198027-Oct-09 22:52
Mirko198027-Oct-09 22:52 
GeneralRe: Pass string " Hello {0}" though MessageBox Pin
I Believe In GOD28-Oct-09 5:25
I Believe In GOD28-Oct-09 5:25 
QuestionSending emails from windows application on windows7 Pin
gottimukkala27-Oct-09 5:54
gottimukkala27-Oct-09 5:54 
AnswerRe: Sending emails from windows application on windows7 Pin
Dave Kreskowiak27-Oct-09 7:38
mveDave Kreskowiak27-Oct-09 7:38 
Questionerror 26: SQL server locating error Pin
Emmet_Brown27-Oct-09 3:59
Emmet_Brown27-Oct-09 3:59 
AnswerRe: error 26: SQL server locating error Pin
Covean27-Oct-09 4:10
Covean27-Oct-09 4:10 
GeneralRe: error 26: SQL server locating error Pin
Emmet_Brown27-Oct-09 4:19
Emmet_Brown27-Oct-09 4:19 
AnswerRe: error 26: SQL server locating error Pin
dan!sh 27-Oct-09 4:12
professional dan!sh 27-Oct-09 4:12 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.