目前遇到c++调用C#写的DLL 问题,把C#的DLL注册为COM组件,在本机测试完成了,但在客户的机器上无法通过,注册的方式是通过Regasm 去注册dll 和tlb文件 ,但是排查注册表的时候发现未完全注册进去,在其它机器上是否需要加codebase,请各位大神帮帮忙,感谢
C#源码
C#中有调用外部DLL
接口:
[Guid("3965F09B-9EE3-42F7-9908-CCA1BEC8603C")]
public interface ICalc
{
[DispId(1)]
void Join(string a,string b, out string c);
}
类:
[Guid("ABFADDE2-185D-4118-BC54-57458343BD8A")]
[ClassInterface(ClassInterfaceType.None)]
public class Calc:ICalc
{
public void Join(string a, string b, out string c)
{
string url = "tcp://10.1.1.198:8085";
ClientUtils.url = url;
string cc = string.Empty;
//DataSet ds = new DataSet();
//string ssql = "select * from sajet.sys_emp where emp_no = '" + b + "'";
//ds = ClientUtils.ExecuteSQL(ssql);
//if (ds.Tables[0].Rows.Count > 0)
//{
// cc = ds.Tables[0].Rows[0]["EMP_NAME"].ToString();
//}
//else
//{
// cc = "NG";
//}
//c = cc;
//return;
if (a == "1")
{
object[][] Params = new object[16][];
Params[0] = new object[] { ParameterDirection.Input, OracleType.VarChar, "tsajet1", a };
Params[1] = new object[] { ParameterDirection.Input, OracleType.VarChar, "tsajet2", b };
Params[2] = new object[] { ParameterDirection.Input, OracleType.VarChar, "tsajet3", "" };
Params[3] = new object[] { ParameterDirection.Input, OracleType.VarChar, "tsajet4", "" };
Params[4] = new object[] { ParameterDirection.Input, OracleType.VarChar, "tsajet5", "" };
Params[5] = new object[] { ParameterDirection.Input, OracleType.VarChar, "tsajet6", "" };
Params[6] = new object[] { ParameterDirection.Input, OracleType.VarChar, "tsajet7", "" };
Params[7] = new object[] { ParameterDirection.Input, OracleType.VarChar, "tsajet8", "" };
Params[8] = new object[] { ParameterDirection.Input, OracleType.VarChar, "tsajet9", "" };
Params[9] = new object[] { ParameterDirection.Input, OracleType.VarChar, "tsajet10", "" };
Params[10] = new object[] { ParameterDirection.Input, OracleType.VarChar, "tsajet11", "" };
Params[11] = new object[] { ParameterDirection.Input, OracleType.VarChar, "tsajet12", "" };
Params[12] = new object[] { ParameterDirection.Input, OracleType.VarChar, "tsajet12ton", "" };
Params[13] = new object[] { ParameterDirection.Input, OracleType.VarChar, "trev", "" };
Params[14] = new object[] { ParameterDirection.Output, OracleType.VarChar, "TRES", "" };
Params[15] = new object[] { ParameterDirection.Output, OracleType.VarChar, "tnextproc", "" };
DataSet ds2 = ClientUtils.ExecuteProc("SAJET.COMMAND_CODE_OTP", Params);
cc = ds2.Tables[0].Rows[0]["TRES"].ToString();
}
c = cc;
return;
}
}