无法加载 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还是什么,要保持一致
[解决办法]
联系厂家吧
[解决办法]
表示遇到了同样的问题...应该是dll的问题.
[解决办法]
这个可能是C#引用的问题,不是dll文件问题.我换成VB程序调试,通过了. 而且,发送,接收也都没问题.
[解决办法]
厂家的那个是你在C#中写的导入函数和sms.dll中的不一致,造成的,你应该再改改。
从网上找的那个,就是路径不对造成的。
另外,从你的说明来看,这个短信发送和gprs没有关系,就是个短信发送猫或短信发送池的硬件。
[解决办法]
将sms.dll 放到C:\Windows\System32下
[解决办法]
unicode and ansi.
[解决办法]
这种问题,你需要写出 C++ 代码是怎样调用的。
这样才有的放矢。