一个调用非托管DLL里的函数出现的问题

bybaxiao 2009-03-18 07:45:40
在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 也不行。

...全文
105 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
猪头崔 2012-05-15
  • 打赏
  • 举报
回复
好像是编码的问题
bybaxiao 2009-03-19
  • 打赏
  • 举报
回复
没有一个人帮助我吗?
bybaxiao 2009-03-18
  • 打赏
  • 举报
回复
请帮帮忙,谢谢,这个问题捆饶我和久了,我不知道是不是参数的问题还是DLL函数里面的问题。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧