首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web Service >

web services调用vc dll的字符串参数有关问题

2012-02-01 
web services调用vc dll的字符串参数问题代码如下:using Systemusing System.Webusing System.Web.Servi

web services调用vc dll的字符串参数问题
代码如下:
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Runtime.InteropServices; //要添加这个才能使用动态链接库kernel132.dll中的非托管代码 

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
  [DllImport("OCRDLL.dll", SetLastError = true,CharSet = CharSet.Unicode)]//引入vc 的dll
  public static extern string ocrimage(string name);//给dll函数传参数
  public Service () {

  //如果使用设计的组件,请取消注释以下行 
  //InitializeComponent(); 
  }

  [WebMethod]
  public string userDLL(string name)
  {
  string urlName = name;
  string Result = ocrimage(urlName);
  return Result;
  }
   
}


正遇到这个问题,就是调用public static extern string ocrimage(string name)函数并给它传字符串参数,在dll得到的是乱码,请大侠帮忙解答,解决马上给分



[解决办法]
[DllImport("OCRDLL.dll", SetLastError = true,CharSet = CharSet.Unicode)]//引入vc 的dll 
public static extern string ocrimage(IntPtr name);//给dll函数传参数 

 IntPtr str= System.Runtime.InteropServices.Marshal.StringToBSTR(urlName)
string Result = ocrimage(str); 

试试,你vC的dll里的字符串是那种?你再看看Marshal里的其他方法看看
[解决办法]
试试,你vC的dll里的字符串是那种?你再看看Marshal里的其他方法看看
[解决办法]
你的这个问题我也遇到过:
public static extern string ocrimage(string name);//给dll函数传参数 
1.
其参数你传的是个字符串,
你要找到你的VC源DLL代码,你把它改成字符数组或是指针的形式,而不要CString;
2.注意编码问题:
CharSet = CharSet.Unicode
VC里默认的是ACISS码,你应该改成C#里的UNICEODE码;故改成:CharSet = CharSet.Ansi;

我遇到的你的问题我就是这样解决的.....如果还有问题,要仔细检查VC代码里内存,返回值等问题...



热点排行