Click here to Skip to main content
15,893,381 members
Home / Discussions / C#
   

C#

 
GeneralHowto: Lock my ArrayList collection. Pin
matthias s.23-Sep-04 6:47
matthias s.23-Sep-04 6:47 
GeneralRe: Howto: Lock my ArrayList collection. Pin
Heath Stewart23-Sep-04 7:34
protectorHeath Stewart23-Sep-04 7:34 
GeneralRe: Howto: Lock my ArrayList collection. Pin
Werdna23-Sep-04 10:29
Werdna23-Sep-04 10:29 
GeneralBasic EventHandling Question Pin
SandeepN23-Sep-04 6:42
SandeepN23-Sep-04 6:42 
GeneralInterfacing with C Vendor DLLs Pin
Evelyne23-Sep-04 4:53
Evelyne23-Sep-04 4:53 
GeneralRe: Interfacing with C Vendor DLLs Pin
Heath Stewart23-Sep-04 6:58
protectorHeath Stewart23-Sep-04 6:58 
GeneralRe: Interfacing with C Vendor DLLs Pin
Evelyne23-Sep-04 8:47
Evelyne23-Sep-04 8:47 
GeneralRe: Interfacing with C Vendor DLLs Pin
Heath Stewart23-Sep-04 10:17
protectorHeath Stewart23-Sep-04 10:17 
Evelyne wrote:
Why did my first reply not appear on the message board?

You hit the "Email" link instead of "Reply".

It's important to know what _DECL is defined as because that's obviously defining your calling convention.

You could just assume it uses the __cdecl calling convention and add the CallingConvention.Cdecl to your DllImportAttribute:
[DllImport("emace_32.dll", CallingConvention=CallingConvention.Cdecl)]
static extern short aceSetIrqConditions(short DevNum, ushort bEnable, 
  uint dwIrqMask, Callback funcExternalIsr);
 
delegate void Callback(short DevNum, uint dwIrqStatus);
Unfortunately, that won't solve your immediate problem. Delegates use the __stdcall calling convention and you can't change this directly in C#. You have to do one of the follow:
  1. Change your native DLL to use the __stdcall calling convention (probably can't since this sounds like it's from another vendor)
  2. Write a Managed C++ assembly that wraps this functionality. Since it targets the CLR and follows the CLI (mostly) you can use it in other managed languages like C#, VB.NET, etc.
  3. Disassemble our assembly, change the calling convention, and reassemble your assembly.
For the last one, write your code and compile your project. Run ildasm.exe <MyProject.exe> to disassemble it. Find the declaration of your callback and add the following between the return type and the name Invoke defined for the delegate:
modopt([mscorlib]System.Runtime.CompilerServices.CallConvCdecl)
Now reassemble using ilasm.exe (notice no "d"). You will want to read about this tool in the .NET Framework SDK before running it to make sure your assembly gets resigned correctly, and you really should sign your assemblies (and version them) to produce a strong name assembly. Not doing that leads to security problems and makes upgrades and .NET code access security a pain. Frankly, it's easy. Just run sn.exe -k <filename> to generate a key pair and set the path in your AssemblyInfo.cs (by default using VS.NET) file's [assembly: AssemblyKeyFile("")] attribute, or add it to a container using sn.exe -i and use the AssemblyKeyNameAttribute instead.

This posting is provided "AS IS" with no warranties, and confers no rights.

Software Design Engineer
Developer Division Sustained Engineering
Microsoft

[My Articles]
GeneralRe: Interfacing with C Vendor DLLs Pin
Evelyne24-Sep-04 16:15
Evelyne24-Sep-04 16:15 
GeneralRe: Interfacing with C Vendor DLLs Pin
Evelyne28-Sep-04 10:32
Evelyne28-Sep-04 10:32 
QuestionC# SQL data check like in PHP??? Pin
cemlouis23-Sep-04 4:44
cemlouis23-Sep-04 4:44 
AnswerRe: C# SQL data check like in PHP??? Pin
Werdna23-Sep-04 10:32
Werdna23-Sep-04 10:32 
GeneralRe: C# SQL data check like in PHP??? Pin
cemlouis23-Sep-04 11:12
cemlouis23-Sep-04 11:12 
GeneralRe: C# SQL data check like in PHP??? Pin
Werdna23-Sep-04 11:38
Werdna23-Sep-04 11:38 
GeneralRe: C# SQL data check like in PHP??? Pin
cemlouis23-Sep-04 12:20
cemlouis23-Sep-04 12:20 
Generalreading a file Pin
cmarmr23-Sep-04 3:42
cmarmr23-Sep-04 3:42 
GeneralRe: reading a file Pin
Heath Stewart23-Sep-04 6:21
protectorHeath Stewart23-Sep-04 6:21 
GeneralRe: reading a file Pin
cmarmr23-Sep-04 8:12
cmarmr23-Sep-04 8:12 
GeneralRe: reading a file Pin
StealthyMark24-Sep-04 1:16
StealthyMark24-Sep-04 1:16 
Generalwhich events ocur Pin
karanba23-Sep-04 3:39
karanba23-Sep-04 3:39 
GeneralRe: which events ocur Pin
Heath Stewart23-Sep-04 7:52
protectorHeath Stewart23-Sep-04 7:52 
GeneralUsing Web service as business logic layer Pin
shambho23-Sep-04 2:59
shambho23-Sep-04 2:59 
GeneralRe: Using Web service as business logic layer Pin
Salil Khedkar23-Sep-04 3:48
Salil Khedkar23-Sep-04 3:48 
GeneralRe: Using Web service as business logic layer Pin
shambho23-Sep-04 4:59
shambho23-Sep-04 4:59 
GeneralRe: Using Web service as business logic layer Pin
Heath Stewart23-Sep-04 7:39
protectorHeath Stewart23-Sep-04 7:39 

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.