2 guolei05423023 guolei05423023 于 2016.04.11 14:04 提问

c#调用c++托管类dll出现无法加载文件或程序集
我的c#程序中调用了c++写的托管类程序,在安装有vs2010软件的机子上都可以正常运行,在未安装该软件的机子上运行该程序便会提示”未能加载文件或程序集”,如图所示,尝试了修改dll的network版本,以及主程序和该dll的运行环境,删除了程序的.pdb文件,将装有vs机子上Microsoft.NET->Primary Interop Assemblies目录下的dll文件全部复制至未安装机子上的Microsoft.NET目录下,仍未解决问题,麻烦各位大神们赐教![图片说明](https://img-ask.csdn.net/upload/201604/11/1460354547_684670.jpg)

2个回答

CSDNXIAOD
CSDNXIAOD   2016.04.11 14:26

C#调用c++的DLL出现“不能直接添加引用,提示不是COM和程序集DLL”
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

guolei05423023
guolei05423023 在安装有vs2010时就运行正常的,只有未安装时是那样子的,我就是直接在项目中右键添加引用的,你说的添加引用是怎样添加的呢
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.04.11 15:43

.net程序集需要注册到gac,或者放在和程序相同的目录,com dll需要注册,原生dll需要拷贝到system32下。无论如何也不是Microsoft.NET目录下

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C#调用c++封装的dll文件提示未能加载正确的程序集XXX或其某一依赖项。。。
IDE:VS2010 语言:C# 异常:System.BadImageFormatException,未能加载正确的程序集XXX或其某一依赖项。。。 一般是由于目标程序的目标平台与其某一依赖项的目标编译平台不一致导致, 把所有的项目都修改到同一目标平台下(X86、X64或AnyCPU)进行编译, 一般即可解决问题。
C#中调用DLL时未能加载文件或程序集错误处理方法
在加载DLL时,出现了未能加载文件或程序集错误。经上网查询后,其原因是x64和x86不兼容的问题。即DLL是x64的,但是VS默认生成的目标平台是x86的,因此,两者的不一致导致异常的出现。其解决办法如下:项目->属性->生成->目标平台->x64(与dll平台一致)
.Net 托管模块与程序集的关系
一、基本概念: --托管模块:一个标准的32的可移植执行体(PE32)文件或一个标准的64位可移植执行体(PE32+)文件。由用支持CLR的任何一种语言创建的源代码文件,再经过相应的编译器检查语法和分析源代码,编译生成。如下: --程序集:由一或者多个模块/资源文件的逻辑性组合。程序集是重用、安全性以及版本控制的最小单元。     可以将.exe与.dll文件认为是一个程序集
在C#调用C++的DLL简析(二)—— 生成托管dll
写操作之前,还是扼要的说一下托管与非托管C++的区别好了,其实我也并没有深入了解过托管C++的特点所在,其最大的特征就是可以由系统来调试回收相关的代码资源,跟C#的特性一样,只是编程风格跟C++类似而已,因此,这决定了C#与托管C++是可以完美结合在一起的。托管C++生成的dll跟C#生成的dll应该说是没区别的,之所以产生托管C++这种怪物,完全是因为微软在极力推崇C#,必须要兼顾不同语言间交互
动态调用DLL时不能加载依赖的程序集
假设有2个DLL, Class1和Class2. Class1引用Class2, 并调用Class2里的方法。 //Class1.Dll namespace feiyun0112.cnblogs.com {     public class Class1     {         public void DoSomething() { Class2.Hello(); }  
C/C++通过COM调用.NET托管程序集的实现(转载)
在.NET托管程序集中,调用非托管的win32 dll 可以通过DllImport 或者Interop中的 P/Invoke 技术将非托管dll生成托管的dll来访问;但反过来,如何在非托管环境下(如C/C++)调用托管的.NET程序集呢?用COM技术就是该问题的一种解决方法:(1) 首先,创建一个.NET的C# 类库解决方案,并添加两个类,IMyInterface和MyMethods:接口类 I
C#调用c++的DLL出现“不能直接添加引用,提示不是COM和程序集DLL”
对于传统的动态链接库,使用下面的方式: using System.Runtime.InteropServices; [DllImport("kernel32.dll")] public static extern int Beep(int dwFreq, int dwDuration); private void WarnSound() { Beep(1900, 3000); }
C++(创建和使用托管程序集)
托管程序集是一种库,您可以创建该库以便高效地重用代码。 这样,就不必在多个程序中重新实现同样的例程,而只需编写这些例程一次,然后在需要该功能的应用程序中引用它们即可。 创建类库项目: 1.      在“文件”菜单上指向“新建”,然后单击“项目”。 2.      在“项目类型”窗格中,选择“Visual C++”下的“CLR”。 此组中的每个项目类型都将创建一个面向公共语言运
C# 中如何调用DLL文件(分两种情况,托管与非托管)
C# 中如何调用DLL文件? 2010-11-28 08:46yanghao717  分类:C#/.NET | 浏览 14452 次  C#编程 我在网上找了好久都没看明白,所以来这里请教高手们了,比如我将一个y.cs这个文件编译成y.dll放在 D:\ 下,y.dll文件中有一个print()方法。现在,我新建一个类x.cs,我要在这个类里调用y.dll,请问有几种方法?哪种最
C#引用第三方DLL时报无法引用此类名错误
1、检查vs版本