读书人

无法加载 DLL“sms.dll”: 内存位置访

发布时间: 2013-03-21 10:08:17 作者: rapoo

无法加载 DLL“sms.dll”: 内存位置访问无效 在线等解答啊
最近在做短信发送功能,用的是GPRS,程序调试的时候,总是提示sms.dll内存位置访问无效,要不就是直接程序死掉。请大家帮忙看看问题到底出在哪里,从网上看的哪些资料都不能解决。也可能是dll的问题,大家谁有sms.dll帮忙发一个。邮箱struggle_wj@163.com,谢谢了
附上代码
动态链接库的

 
[STAThread]
[DllImport("sms.dll", EntryPoint = "Sms_Connection")]
public static extern uint Sms_Connection(string CopyRight, uint Com_Port, uint Com_BaudRate, out string Mobile_Type, out string CopyRightToCOM);

[DllImport("sms.dll", EntryPoint = "Sms_Disconnection")]
public static extern uint Sms_Disconnection();

[DllImport("sms.dll", EntryPoint = "Sms_Send")]
public static extern uint Sms_Send(string Sms_TelNum, string Sms_Text);

[DllImport("sms.dll", EntryPoint = "Sms_Receive")]
public static extern uint Sms_Receive(string Sms_Type, out string Sms_Text);

[DllImport("sms.dll", EntryPoint = "Sms_Delete")]
public static extern uint Sms_Delete(string Sms_Index);

[DllImport("sms.dll", EntryPoint = "Sms_AutoFlag")]
public static extern uint Sms_AutoFlag();

[DllImport("sms.dll", EntryPoint = "Sms_NewFlag")]
public static extern uint Sms_NewFlag();

我自己写的
  /// <summary>
/// 开始短信服务,连接
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>

private void button1_Click(object sender, EventArgs e)
{
//Thread thread = new Thread(new ThreadStart(Start));
//thread.Name = "GPRS";
//thread.IsBackground = true;
//thread.Start();
string TypeStr = "wavecom";
string CopyRightToCOM = "";
string CopyRightStr = "modem.COM8";
for (uint j = 1; j < 10; j++)
{
//运行到这块就报错了


uint i = SMS.Sms_Connection(CopyRightStr, (uint)j, (uint)9600, out TypeStr, out CopyRightToCOM);
if (i == 1)
{
MessageBox.Show("成功!");
}
else
{
MessageBox.Show("失败");
}
}
}


[解决办法]
原型呢,第一注意参数类型,第二要注意调用 约定,stdcall还是什么,要保持一致
[解决办法]
引用:
引用:原型呢,第一注意参数类型,第二要注意调用 约定,stdcall还是什么,要保持一致

参数类型没有错,一开始我用的厂家给我的sms.dll报错,该内存已经损坏,然后我就从网上找了一个sms.dll结果就报上边那个错了,你说的那个stdcall加上了也不管用,帮忙再想想别的办法吧

联系厂家吧
[解决办法]
表示遇到了同样的问题...应该是dll的问题.
[解决办法]
这个可能是C#引用的问题,不是dll文件问题.我换成VB程序调试,通过了. 而且,发送,接收也都没问题.
[解决办法]
厂家的那个是你在C#中写的导入函数和sms.dll中的不一致,造成的,你应该再改改。
从网上找的那个,就是路径不对造成的。


另外,从你的说明来看,这个短信发送和gprs没有关系,就是个短信发送猫或短信发送池的硬件。
[解决办法]
将sms.dll 放到C:\Windows\System32下
[解决办法]
unicode and ansi.
[解决办法]
这种问题,你需要写出 C++ 代码是怎样调用的。
这样才有的放矢。

读书人网 >C#

热点推荐