这段代码演示的是如何调用C++的dll.Using Unmanaged code and assembler in C#
http://www.codeproject.com/csharp/unmanage.asp论坛中也由很多类似的问题,用API找,由很多.
http://www.codeproject.com/csharp/unmanage.asp论坛中也由很多类似的问题,用API找,由很多.
解决方案 »
- 请问如何才能中断dataset的数据行删除
- 派生类为什么加 ref 就传不了呢
- 动态在WinForm中加入可视化控件并要与参照物对齐。我这种做法可以怎么改进?
- 关于调用api函数时的一个小问题
- WForm/WebForm中如何是使控件多出想要得属性
- 接受的传值???
- 智能客户端发布后的问题 发布以后我修改应用程序的配置文件,客户端连接的时候报错 应用程序验证未成功,无法继续
- 关于加密的一个妖怪问题——加急
- 如何在运行异步操作的时候,禁止用户在界面上的任何位置点击鼠标
- C#操作excel的api文档谁有? 还有。
- 怎样将datagrid中的delete键给屏了!
- 在.net下有没有象coolbar那样的工具栏容器组件?
// Void.csusing System;
using System.Text;
using System.Runtime.InteropServices;public class LibWrap
{
public enum DataType
{
DT_I2 = 1,
DT_I4,
DT_R4,
DT_R8,
DT_STR
}
// void SetData(DataType typ, void* object)
// using AsAny when void* is expected
[ DllImport( "..\\LIB\\PinvokeLib.dll" )]
public static extern void SetData( DataType t,
[ MarshalAs( UnmanagedType.AsAny )] Object o );
// using overloading when void* is expected
[ DllImport( "..\\LIB\\PinvokeLib.dll", EntryPoint="SetData" )]
public static extern void SetData2( DataType t, ref double i );
[ DllImport( "..\\LIB\\PinvokeLib.dll", EntryPoint="SetData" )]
public static extern void SetData2( DataType t, String s );
}public class App
{
public static void Main()
{
Console.WriteLine( "Calling SetData using AsAny... \n" );
LibWrap.SetData( LibWrap.DataType.DT_I2, (short)12 );
LibWrap.SetData( LibWrap.DataType.DT_I4, (long)12 );
LibWrap.SetData( LibWrap.DataType.DT_R4, (float)12 );
LibWrap.SetData( LibWrap.DataType.DT_R8, (double)12 );
LibWrap.SetData( LibWrap.DataType.DT_STR, "abcd" );
Console.WriteLine( "\nCalling SetData using overloading... \n" );
double d = 12;
LibWrap.SetData2( LibWrap.DataType.DT_R8, ref d );
LibWrap.SetData2( LibWrap.DataType.DT_STR, "abcd" );
}
}