一个调用非托管DLL里的函数出现的问题
在class里面声明了:
[DllImport("MarkEzd.dll", CharSet = CharSet.Auto)]
public static extern int lmc1_Initial(byte[] strEzCadPath, bool bTestMode, IntPtr hOwenWnd);
private string InitPath;
System.Text.UnicodeEncoding converter = new System.Text.UnicodeEncoding();
byte[] inputBytes;
private int init_status;
构造函数:
public ChangeSN()
{
InitPath = @"G:\金橙子\EzCad2.0.8(20070125)\";
inputBytes = converter.GetBytes(InitPath);
InitializeComponent();
}
load函数
private void Form1_Load(object sender, EventArgs e)
{
if (0 != (init_status = lmc1_Initial(inputBytes, true, IntPtr.Zero)))
{
//throw (new Exception("initialization fail!"));
MessageBox.Show(init_status.ToString());
}
}
老是返回6
其中资料里面是这么写的
#define LMC1_ERR_DEVCFG 6 //找不到设备配置文件
#define LMC1_ERR_SUCCESS 0 //成功
函 数 名:lmc1_Initial
目 的:初始化lmc1控制卡。
语 法:int lmc1_Initial(TCHAR* strEzCadPath,BOOL bTestMode,HWND hOwenWnd);
strEzCadPath是ezcad2.exe所处的目录的全路径名称;
bTestMode 指是否是测试模式
hOwenWnd 指拥有用户输入焦点的窗口,用于检测用户暂停消息。
描 述:在程序中必须首先调用lmc1_Initial,其它函数才能工作。
返 回 值:通用错误码
为什么老是不能init_status 成功,不知道哪里出的问题,Dll里面的东西我看不到,请高手帮忙解决。我把那个byte[]换成了string 也不行。