c#中调用腾讯云IM云通信生成签名,应用非托管sigcheck.dll文件,本地运行没问题,发布到服务器中提示找不到dll文件;
public const string DllPath = @"C:\WINDOWS\system32\sigcheck.dll"; // 32 位
class sigcheck
{
[DllImport(dllpath.DllPath, EntryPoint = "tls_gen_sig", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public extern static int tls_gen_sig(
UInt32 expire,
string appid3rd,
UInt32 sdkappid,
string identifier,
UInt32 acctype,
StringBuilder sig,
UInt32 sig_buff_len,
string pri_key,
UInt32 pri_key_len,
StringBuilder err_msg,
UInt32 err_msg_buff_len
);
[DllImport(dllpath.DllPath, EntryPoint = "tls_vri_sig", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public extern static int tls_vri_sig(
string sig,
string pub_key,
UInt32 pub_key_len,
UInt32 acctype,
string appid3rd,
UInt32 sdkappid,
string identifier,
StringBuilder err_msg,
UInt32 err_msg_buff_len
);
[DllImport(dllpath.DllPath, EntryPoint = "tls_gen_sig_ex", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public extern static int tls_gen_sig_ex(
UInt32 sdkappid,
string identifier,
StringBuilder sig,
UInt32 sig_buff_len,
string pri_key,
UInt32 pri_key_len,
StringBuilder err_msg,
UInt32 err_msg_buff_len
);
[DllImport(dllpath.DllPath, EntryPoint = "tls_vri_sig_ex", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public extern static int tls_vri_sig_ex(
string sig,
string pub_key,
UInt32 pub_key_len,
UInt32 sdkappid,
string identifier,
ref UInt32 expire_time,
ref UInt32 init_time,
StringBuilder err_msg,
UInt32 err_msg_buff_len
);
}
网上说的放到system32目录下,我也放了;dll文件用到其他dll文件我看system32目录下也有,但是好多试了都不管用,实在不知怎么办了
都放到应用程序的bin文件夹试试
放到bin文件夹试了也不行
@清&清: 本地运行的机器与服务器的系统是32还是64位?.NET程序编译的目标平台是什么?
@清&清: 另外,腾讯云不是提供了.NET的SDK吗?为什么不直接用?
@dudu: 我没在腾讯云上找到她提供的.NET的sdk呀,我问客服说没有,我就在上面下载个demo,里面有个签名样例,我就这样拿来用一下,你知道.net在哪儿提供的sdk吗?
@清&清: 腾讯云的短信服务是有.NET SDK的
@dudu: 我用的是腾讯云IM云通信,生成签名时用的sigcheck.dll
@清&清: 继续解决这个问题吧,.NET程序编译的目标平台是什么?
@dudu: windows servers 2003
@清&清: 32位还是64位?
@dudu: 32的吧
@清&清: 可以试试把.NET程序编译为32位的(x86)
@dudu: 其他的都没问题,就这次新加内容用到这个非托管dll文件,开始找不到
@dudu: 发布成32的位的也不行