C#调用医保接口VC动态库,提示:无法加载 DLL “BargaingApplyV3_01036.dll”:找不到指定的模块,郁闷,函数名确实没有打错啊?public class Sxyb
{
/// <summary>
/// 交易初始化函数
/// </summary>
/// <param name="strEmpty">不需要传递数据</param>
/// <param name="strMsg">返回的信息</param>
/// <param name="strYLJGBH">传递医疗机构编号</param>
/// <returns>等于0:成功,没有任何警告,返回信息在retMsg,大于0:成功,但是有警告信息,警告信息在retMsg,小于0:失败,错误信息在retMsg中</returns>
[DllImport("BargaingApplyV3_01036.dll", EntryPoint = "f_UserBargaingInit")]
public static extern int f_UserBargaingInit(string strEmpty, string strMsg,string strYLJGBH); /// <summary>
/// 交易关闭函数
/// </summary>
/// <param name="strEmpty">不需要传递数据</param>
/// <param name="strMsg">返回的信息</param>
/// <param name="strYLJGBH">传递医疗机构编号</param>
/// <returns>等于0:成功,没有任何警告,返回信息在retMsg,大于0:成功,但是有警告信息,警告信息在retMsg,小于0:失败,错误信息在retMsg中</returns>
[DllImport("BargaingApplyV3_01036.dll", EntryPoint = "f_UserBargaingClose")]
public static extern int f_UserBargaingClose(string strEmpty, string strMsg, string strYLJGBH);
}
string strEmpty = string.Empty;
string strMsg = string.Empty;
string strYLJGBH = "330699000081";
int result = Sxyb.f_UserBargaingInit(strEmpty, strMsg, strYLJGBH);
MessageBox.Show(result.ToString() + "," + strMsg);函数原型:int f_UserBargaingInit(const char * Data1,char * retMsg,char* Data2)
功能:系统应用前初始化数据准备
参数说明:
传入参数:Data1-------不需要传递数据
Data2-------传递医疗机构编号
retMsg ---- 返回的信息,数据包格式参考3.3
返回值:=0-----------成功,没有任何警告,返回信息在retMsg
>0-----------成功,但是有警告信息,警告信息在retMsg
<0-----------失败,错误信息在retMsg中
{
/// <summary>
/// 交易初始化函数
/// </summary>
/// <param name="strEmpty">不需要传递数据</param>
/// <param name="strMsg">返回的信息</param>
/// <param name="strYLJGBH">传递医疗机构编号</param>
/// <returns>等于0:成功,没有任何警告,返回信息在retMsg,大于0:成功,但是有警告信息,警告信息在retMsg,小于0:失败,错误信息在retMsg中</returns>
[DllImport("BargaingApplyV3_01036.dll", EntryPoint = "f_UserBargaingInit")]
public static extern int f_UserBargaingInit(string strEmpty, string strMsg,string strYLJGBH); /// <summary>
/// 交易关闭函数
/// </summary>
/// <param name="strEmpty">不需要传递数据</param>
/// <param name="strMsg">返回的信息</param>
/// <param name="strYLJGBH">传递医疗机构编号</param>
/// <returns>等于0:成功,没有任何警告,返回信息在retMsg,大于0:成功,但是有警告信息,警告信息在retMsg,小于0:失败,错误信息在retMsg中</returns>
[DllImport("BargaingApplyV3_01036.dll", EntryPoint = "f_UserBargaingClose")]
public static extern int f_UserBargaingClose(string strEmpty, string strMsg, string strYLJGBH);
}
string strEmpty = string.Empty;
string strMsg = string.Empty;
string strYLJGBH = "330699000081";
int result = Sxyb.f_UserBargaingInit(strEmpty, strMsg, strYLJGBH);
MessageBox.Show(result.ToString() + "," + strMsg);函数原型:int f_UserBargaingInit(const char * Data1,char * retMsg,char* Data2)
功能:系统应用前初始化数据准备
参数说明:
传入参数:Data1-------不需要传递数据
Data2-------传递医疗机构编号
retMsg ---- 返回的信息,数据包格式参考3.3
返回值:=0-----------成功,没有任何警告,返回信息在retMsg
>0-----------成功,但是有警告信息,警告信息在retMsg
<0-----------失败,错误信息在retMsg中
解决方案 »
- 求一个c#例子:每10秒执行一次某方法
- 关于播放PCM音频数据的小程序
- 为什么一个按钮必须点2次才执行其onclick事件?
- .net发邮件问题?
- 请问:C#入门经典(清华大学出版社)的,这本书怎么样?
- 并发冲突:updatecommand影响了0个记录”错误
- C#.net 紧急求!!!!!
- serialport收到数据后再继续发,怎么处理?
- ——————怎样将一个字符串中的特殊字符全都去掉?
- 一个简单的问题,更是一个令人郁闷至死的问题....!!!(关于DataList 绑定)
- .net使用HttpWebRequest POST文件问题
- C#中怎样获得当前电脑登录windows系统的域名称和域帐号
{
/// <summary>
/// 交易初始化函数
/// </summary>
/// <param name="strEmpty">不需要传递数据</param>
/// <param name="strMsg">返回的信息</param>
/// <param name="strYLJGBH">传递医疗机构编号</param>
/// <returns>等于0:成功,没有任何警告,返回信息在retMsg,大于0:成功,但是有警告信息,警告信息在retMsg,小于0:失败,错误信息在retMsg中</returns>
[DllImport("BargaingApplyV3_01036.dll", EntryPoint = "f_UserBargaingInit")]
public static extern int f_UserBargaingInit(string strEmpty, string strMsg,string strYLJGBH); /// <summary>
/// 交易关闭函数
/// </summary>
/// <param name="strEmpty">不需要传递数据</param>
/// <param name="strMsg">返回的信息</param>
/// <param name="strYLJGBH">传递医疗机构编号</param>
/// <returns>等于0:成功,没有任何警告,返回信息在retMsg,大于0:成功,但是有警告信息,警告信息在retMsg,小于0:失败,错误信息在retMsg中</returns>
[DllImport("BargaingApplyV3_01036.dll", EntryPoint = "f_UserBargaingClose")]
public static extern int f_UserBargaingClose(string strEmpty, string strMsg, string strYLJGBH);
}
PowerBuilder中函数定义:FUNCTION integer f_UserBargaingInit(string lpData1, ref string lpMessage,string lpData2) library "BargaingApplyV3_01011 "
dll导出函数没有问题
保证dll与你的程序在同一个目录下
不行就LoadLibrary+GetProcAddress
/// Return Type: int
public delegate int FARPROC();[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
public struct HINSTANCE__ {
/// int
public int unused;
}public partial class NativeMethods {
/// Return Type: HMODULE->HINSTANCE->HINSTANCE__*
///lpFileName: LPCTSTR->LPCWSTR->WCHAR*
[System.Runtime.InteropServices.DllImportAttribute("kernel32.dll", EntryPoint="LoadLibraryW")]
public static extern System.IntPtr LoadLibraryW([System.Runtime.InteropServices.InAttribute()] [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPTStr)] string lpFileName) ;
/// Return Type: FARPROC
///hModule: HMODULE->HINSTANCE->HINSTANCE__*
///lpProcName: LPCSTR->CHAR*
[System.Runtime.InteropServices.DllImportAttribute("kernel32.dll", EntryPoint="GetProcAddress")]
public static extern FARPROC GetProcAddress([System.Runtime.InteropServices.InAttribute()] System.IntPtr hModule, [System.Runtime.InteropServices.InAttribute()] [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)] string lpProcName) ;}
试试别的。VC如果没有改动的话,默认是__cdecl。
[DllImport(CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]