C#生成的类库 dll 无法在其它机注册 160C

目前遇到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;
}
}

0

5个回答

可能的原因,GUID重复,注册的时候,regasm没有权限,目标平台的.net库版本不兼容,丢失组件等等。你排查下。

0

起码查看一下注册时候的错误信息,是不是有依赖的文件等没有,或者权限限制,或者被防火墙等拦截阻止注册

0

只能各种尝试吧,,,目录名 目录位置 .net 版本 换一个注册工具 在不能注册的那机上反编译C# dll
等等

0

原则上C++不能调用C#的dll的,除非你用的是托管的C++,如果是原生的C++不能直接调用,需要转成托管C++,即C++.net

-1

c++无法调用,要重新配置

-1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C#写好的类库dll怎么在别人调用的时候也能看到注释?
菜单 Project -> 'xxxx' Properties -> Build -> Output -> 勾上 XML Documentation file
.NET-C#类库用regsvr32注册,找不到入口点的问题
C#类库用regsvr32注册,找不到入口点的问题方法!
如何在Delphi 中调用C#生成的DLL类库
最近需要写一个和给上位机和下位机通讯的接口,而上位机是用Delphi开发的,所以就需要用C#做一类库给Delphi调用 大概步骤: 1、首先在VS2008中新建一个类项目名为TestDelphi,然后添加一个接口文件命名为ITest.cs 源代码如下: using System; using System.Collections.Generic; using System.Text; u...
C# 创建与引用类库项目dll
一,类的访问修饰符先看下三种类的访问修饰符情况:public class//公开类,都能访问该类 internal class//仅能在当前项目访问类 class//同internal class所以,要想引用dll中的类,在创建类库项目时要明确指定该类为public class。二,新建类库项目打开VS,点击文件-新建项目,选中类库模板,将项目命名为ClassLibraryCalculate,如图
c# 注册模块Dll 直接调用就行
c# 注册模块Dll 直接引用 调用即可,注册机可以找我要QQ:jasonto@qq.com 使用方法: private void Form1_Load(object sender, EventArgs e) { try { Reg abc = new Reg("test.exe");//test.exe为应用程序名称; abc.WindowState = FormWindowState.Minimized; if (abc.ShowDialog() == DialogResult.OK) { this.Text = "已注册版本"; } else { Application.Exit(); } } catch (Exception) { MessageBox.Show("重要dll,丢失!"); Application.Exit(); } }
C#上创建ActiveX步骤
C#上创建ActiveX步骤 一新建一个解决方案,网上大部分选择是Framework2.0。我们这次选择4.0.   二新建一个类库 命名为ActiveX_Test,设右键该项目-属性-生成     然后选择“应用程序-程序集信息”,     勾上“使程序集Com可见   ”   二新建一个接口  IObjectSafety namespace Active
c#编写dll 供其他语言调用问题
前段时间一个停车场监控的项目中,公司需要在vb 的程序集调用一个外部dll,于是编写了一个dameo 介入后发现无法调用,后来查阅资料发现c#的dll不是变准dll,是基于程序集托管(基于.net framework)的的代码,而其他语言 比如c是非程序及托管的dll 而托管dll只能被托管类语言调用,非托管语言无法调用。 这里记录一下问题原因。 暂时没找到解决方案~~
关于开发类库后使用无法看到注释的解决方法
1、使用三个斜杠的格式方法注释的格式:/// <summary> /// 这是一个方法的注释,类其他都一样 /// </summary> void Method() { }2、设置设置类库生存xml,并拷贝到引用的地方具体设置是:项目右键—>属性—>生成—>XML文档文件选中再编译 引用动态类库时,把类库和同名的xml文件放到同一个文件夹内即可。
C# 类库 读取 app.dll.config 配置文件的问题
app.config文件仅供exe工程读取的,想多数操作一样,使用 ConfigurationManager.AppSettings[&quot;key&quot;]   就可以正常读取。在调试dll工程时,需要单独指定config文件才能正确读取key值。 static string configPath = System.Reflection.Assembly.GetExecutingAssembly().Loc...
VS2017创建DLL动态库------C#调用
VS2017创建DLL动态库------C#调用 1.VS2017新建项目:点击项目进入第二步。 2.项目与路径:点确定就OK了。 3.进入界面后:右键头文件---》添加---》新建项 3.1添加头文件  3.2写我们的接口函数    3.3写头文件    3.4添加def文件  3.5写def文件
VS2015 编译生成C#的DLL文件,并调用
转载请注明出处! C#生成dll文件是Visual Studio2015自动生成的,把项目的程序集信息(类的字段、属性、方法函数等信息)封装在dll中。然后其他项目可以通过引用dll来调用封装好的程序集中的信息。以下是我经常使用的VS2015生成并调用的C# dll方法。 一、生成C#的dll文件 1、选择解决方案下要生成dll文件的项目,右键该项目->属性->应用程序。 编译
C#一般类库项目中无法添加资源文件(ResourceDictionary)
背景:本人要实现工作流自定义活动中属性栏中的集合属性功能,如图: 1、首先添加三个引用:     1.PresentationCore     2.PresentationFramework     3.WindowsBase   若项目提示缺少其他引用,则按照提示添加即可,例如(System.Activity、System.Activities.Core.Presentation、...
使用VS2013创建C#的dll文件
之前在看C#书的时候,讲到了命名空间这一部分,于是去网上搜了一下如何用VS2013来创建dll文件,看到大家很多都是用C++里的win32来创建的,感觉很不方便,这VS2013里现在都是有各种模版文件了,我们其实可以直接使用它们来创建的。 这就写了一个简单的教程,方便大家学习使用VS2013来创建C#的dll文件。     (1)首先,打开VS2013,选择“新建项目”。我这里是在
如何用C#实现自动注册DLL文件
C#有关技术资料,这里可以在C#中,实现帮助你注册DLL文件,而不用在注册表里面进行注册。
VS2017中给C#的类文件打包为.dll库文件提供给第三方使用
一、新建需要进行打包为.dll库文件的项目 ①打开VS2017,新建--&gt;项目,如下图所示: ②新建需要打成.dll库文件的类(点击项目右键,添加--&gt;类 文件,如下图所示:) ③编写该类的内容(注意:必须为public修饰符)如下图所示; 二、点击项目生成解决方案,然后在项目目录的bin/debug下即可发现封装好的dll文件 三、在第三方项目中...
vs2010 .vb如何生成类库(DLL)
vs2010 vb如何生成类库(DLL) 1.打开VS2010,文件,新建项目-visual basic -windows-类库 .vb如何生成类库(DLL)" TITLE="vs2010 .vb如何生成类库(DLL)" /> 2.把已经调试编写好的类库拷贝到当前类文件中,保存 3.设置根命名空间,编程时imports 引用的是命名空间的名字,不是类名,所以,要定义好自己的命名空间名字和根命名
如何让C#生成的dll动态库文件,在被引用时带有注释备注提示
如何让C#生成的dll动态库文件,在被引用时带有注释备注提示
C#读取和导出EXCEL类库 AppLibrary.dll
AppLibrary 读取和导出EXCEL类库(可操作多个SHEET) C#
C#调用C/C++编译生成的dll库
1 在C#中调用C/C++的动态链接库( .dll 文件)的一般格式 using System.Runtime.InteropServuces; //这是必须引用的命名空间(添加在文件中的其他using 下) 引用原型: [DllImport(&quot;user32.dll&quot;)] public static extern ReturnType FunctionName(t...
将WPF应用程序生成dll库供项目使用
如题,见下图:WPFTest为新建的WPF应用程序项目,将App.xmal和MainWindow.xmal删除,然后单击右键选择属性,进入如下界面:将输出类型改为库类,最后在需要使用的项目中引用该dll库,在需要使用的地方添加命名空间即可。...
如何使用VS生成C#类库
生成自己的类库,dll文件,可以引用,直接建立项目,在项目bin目录下可以看到生成的dll
JS调用c#编写的DLL 源代码
JS调用c#编写的DLL 源代码 包含c#新建类库,生成DLL,以及DLL的注册 ,JS调用DLL的两种方法的整个过程。
C#动态遍历加载继承同一接口dll
C#动态遍历加载继承同一接口dll     C#动态加载目录下符合条件的dll,且dll中可有多个类、多个符合条件的类且继承同一接口;然后可使用其中的方法。      亲测可行,如果仍有怀疑,不妨去试试哦!
VS C#生成dll,C#和unity工程调用
1, C# 生成dll a, vs新建C#类库工程生成dll,对应的cs文件。 DllSuccess.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; //using System.Threading.Tasks; namespace DllSuccess { ...
Csharp调用c++的DLL类库
共含有2个项目,一个是c++写的DLL类库,另一个是C#调用第一个项目生成的DLL类库。 另外可以参考: http://blog.csdn.net/jshayzf/article/details/23608705 有说明,有实例,更好懂,代码下载后用VS2010就可以运行!
C#.NET 封装DLL类库方法
C#.NET 封装DLL类库方法,详细介绍了两种将类封装成DLL类库的方法
再谈.net项目类库dll的管理及Framework 文件重用方法
项目要做大, 必然要切分. 切分成各个小项目. 为了源代码的安全和开发环境的简化. 需要将某些底层项目独立出来. 做成Framework. 就包含 类库Framework 和 网站Framework 两种. 先说类库类型的Framework如何重复使用.之前我一直把类库型的Framework 都生成到一个固定的文件夹 D:\output\ 下. 这样很简单. 一会就搞定.
在.NET中的C# DLL文件的生成与使用
1.生成.DLL文件          步骤1:打开Microsoft Visual Studio 2010,点击【文件】→【新建】→【项目】→【类库】,如下图所示。修改名称和位置后,点击【确定】。 步骤2:完成后显示如下。        此时已经有一个名为class1的类,可以直接在这个类中编写代码,也可以右键单击右侧解决方案中的【class1.cs】→【删除】来删除这个类
JavaScript学习笔记之JavaScript调用C#编写的COM组件
1、新建一个C#类库项目:MyCom; 2、修改 Properties 目录下的 AssemblyInfo.cs(程序集文件) 中的 ComVisible 属性为 true; 3、项目->属性->生成,勾选 “为COM互操作注册” ; 4、项目->属性->签名,勾选 “为程序集签名” ,在下面的 “选择强名称秘钥文件” 下选择新建,在弹出的 窗口中的 “秘钥文件名称” 添加一
VS2017 C++调用C#生成的COM组件
C#生成COM组件: VS2017 ——&amp;gt; 新建 ——&amp;gt; 项目 ——&amp;gt; Visual C# ——&amp;gt; 类库(.NET Framework) *注意:如果选择 &quot;类库(.NET Standard)&quot; 后面可能无法选择 &quot;为COM互操作注册&quot;,同时记住选择的.NET Framework的版本 示例:新建的工程名为 ComExample,重命名Class1.cs为Com...
如何生成用户控件的DLL文件方法 VS开发环境 C#
开发员在自制“用户控件”时往往要生成DLL类库文件,方便以后其它项目的调用,在此介绍一下用户控件的DLL生成方法,图文并茂,注释齐全,简单易学,活学活用
c# 封装动态链接库dll
前天学习了下将自己的方法封装进dll,同时在其他的项目里引用封装的dll,并调用dll里的方法。同时还试探了下将Windows应用程序封装进dll(Winform),下面详细介绍。 一、建立  类库  将方法封装进dll 在VS里新建一个类库项目,项目名称为MyTestDll,并添加两个类文件(TestDll.cs和TestDll2.cs),下面是方法代码。 TestDll文件代码 usi
项目导入NPOI.dll的简单介绍
NPOI 是 POI 项目的 .NET 版本。POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。     NPOI之所以强大,并不是因为它支持导出Excel,而是因为它支持导入Excel,并能"理解"OLE2文档结构,这也是其他一些Excel读写库比较弱的方面。通常,读入并理解结构远比导出来得复杂,因为导入你必须假设一切情况都是可能的,而生成你只要保证满足你自己需求
C#引用不在工程目录下的dll文件
  //示例 //--引入DLL↓--// [DllImport(&quot;../../dll目录/标定DLL3.dll&quot;)] public static extern IntPtr open_capture(out int width, out int height, out int step); [DllImport(&quot;../../dll目录/标定DLL...
c#如何将winform窗体封装成可以引用的dll文件
待你涉及的窗体+功能涉及好,调试无bug后(以下是以vs2010测试成功的): 1.右击你的工程,“属性”——“应用程序”——“输出类型”——“下拉菜单中选择类库”——“保存”——右击项目---“生成”——完毕。 2.右击你的工程——“在windows资源管理器中打开文件夹”——在bin文件夹下面的:如果你是debug调试,就是debug文件夹下面会与有此项目一模一样的一个dll文件;如果你选
C# 注册DLL至GAC 并在添加引用中使用该DLL
1,创建一个强签名的类库 类库属性中新建秘钥文件 或者使用工具 使用命令sn -k mykey.snk生成snk文件。生成好的文件在C:\Windows\SysWOW64路径下。 2,管理员身份运行  执行命令 完成注册DLL至GAC操作。文件存在 此时可删除项目Debuge文件夹中的该DLL,程序仍可运行【因为程序会优先使用GAC中的DLL】 3,注册表中加入...
C#学习总结笔记本 c#生成dll,com组件调用
创建C#dll com组件 勾选 添加密钥 重命名类文件 使用工具生成Guid【作用不明】 Guid生成 任何一个公开的类,必须有一个 I开通的接口定义【作用不明】 重新生成 查看dll所在目录 以管理员身份运行,进入到目录 注册dll gacutil /i regasm 指令路径:大致如下 ...
C++调用C#类库dll
众所周知,如果要用Java来调用C#,则最好的方法是通过将C#封装成webservice,然后让Java来调用webservice。但是还有一种方法可行,那就是通过JNI来调用C++,然后C++在后台对C#类库进行调用。这里我就想说一下C++调用C#的操作流程。 (1)先新建一个C#的类库项目,名称可以随意起,这里取名为CSharpLibrary,然后内部新建一个类,名称为Sim...
NPOI动态库(dll)打包下载,已验证
里面是我收集的几个NPOI动态库: 1)NPOI.dll; 2)NPOI.POIFS.dll; 3)NPOI.HSSF.dll; 4)NPOI.Util.dll 已验证可以使用,官网下载的只有2个,我好不容易收集全,已经验证可以使用。 如果命名空间错误,尝试用新版本的命名办法,前后区别大家自己体会。过一段时间我把自己代码贴出来
DLL库类的导出,C#的调用
在DLL库的编写中,如果想要把DLL库中写的类导出,并且在C#中进行使用,我们需要先初始化获取类的指针,然后我们可以通过指针对类进行调用,使我们能正常的使用类中的功能。  #ifdef DLL_API #else #define DLL_API extern "C"__declspec(dllexport) #endif class WebICAdapter { public: WebICA