Tag: 互操作

已经从其基础RCW分离的COM对象不能使用

我正在尝试使用OpcRcw.da.dll。 如果我互操作这个DLL在一个testing控制台项目内一切正常,但如果我build立的DLL项目做我的interop体操和ref我的图书馆到我的控制台项目我得到这个错误: 已经从其基础RCW分离的COM对象不能使用。 什么需要做一个类库项目不杀死RCW ref?

来自HRESULT的exception:0x800A03EC错误

使用以下代码运行Excel加载项时出现“HRESULT:0x800A03EC”错误: Excel.Range rng = ActiveSheet.Cells[x, y] as Excel.Range; string before = rng.Value2; string cleanV = System.Text.RegularExpressions.Regex.Replace(before, @"\s+", ""); rng.set_Value(cleanV); 当错误发生时,X和Y被设置为1,因此Excel范围不被违反。 我广泛search并尝试了许多设置单元格值的方法(例如Cells [x,y],range.set_Value()),但是为什么会出现此错误以及如何避免此错误。 任何帮助是极大的赞赏。 以下是例外情况: System.Runtime.InteropServices.COMException was unhandled by user code HResult=-2146827284 Message=Exception from HRESULT: 0x800A03EC Source="" ErrorCode=-2146827284 StackTrace: at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData) at Microsoft.Office.Interop.Excel.Range.set_Value(Object RangeValueDataType, Object value) at […]

如何在没有安装MS Office的机器上使用Microsoft.Office.Interop.Excel?

我正在写一个适用于excel文件的应用程序。 我需要一个function来删除工作表。 我必须使用程序集Microsoft.Office.Interop.Excel.dll。 它在开发人员机器上运行良好,但是当我尝试将其部署在服务器上时,出现错误: 无法加载文件或程序集“Office,Version = 14.0.0.0,Culture = neutral,PublicKeyToken = 71e9bce111e9429c”或其某个依赖关系 我明白,当一台机器上没有安装MS Office时会出现这个问题。 客户不想以任何代价在服务器上安装和购买MS Office。 我在开发者机器上安装了“Redistributable Primary Interop Assemblies”,build议在这里: http : //forums.asp.net/t/1530230.aspx/1并重新编译我的项目。 代码示例: public bool DeleteSheet(string tableName) { Excel.Application app = null; Excel.Workbooks wbks = null; Excel._Workbook _wbk = null; Excel.Sheets shs = null; bool found = false; try { app = new Excel.Application(); app.Visible […]

Java / Net与AES之间的Interopencryption/解密以及指定IV和密钥

我正在尝试使用AES来实现对称encryption,其中指定了密钥和IV。 在每个生态系统(Java-> Java / .NET-> .NET)中,encryption和解密都是按照devise的方式工作的,但是如果我试图在两者之间进行操作,我会遇到大量有关填充等的错误。 我已经阅读了几个post,包括http://blogs.msdn.com/b/dotnetinterop/archive/2005/01/24/java-and-net-aes-crypto-interop.aspx,但似乎没有相同的用例。 这是我的代码: JAVA public class Main { public static void main(String[] args) throws Exception { String data = "Something to decrypt"; String encrypt = Encrypt(data); System.out.println(encrypt); String decrypt = Decrypt(encrypt); System.out.println(decrypt); } private static String Encrypt(String raw) throws Exception { Cipher c = getCipher(Cipher.ENCRYPT_MODE); byte[] encryptedVal = c.doFinal(raw.getBytes("UTF-8")); return […]

在C#中使用.jar java库API?

我是一个入门级的程序员,所以请在你的回答中描述。 我正在尝试在我的C#.net应用程序中使用作为.jar文件提供的Java API。 我不太了解Java,但是当我试图运行它时,这个.jar文件显示“no main-class manifest attribute”,所以这意味着它是一个库? 这个Java API还带有一个.java文件,它显示了如何使用这个库,但是我看不到.jar里面的代码。 我在这个网站上发现了这个问题 ,其中一个答案是:“简单地说,你可以把你的java类打包成jar文件,然后在C#中使用Process类来执行和映射IOstream。 我对C#中的Process类非常熟悉,但我不明白如何使用它在我的C#.net项目中使用Java库。 这可能吗? 还是那个答案不正确? 如果是这样,你能解释我如何在我的C#应用​​程序中使用.jar库。

从x64 .NET访问x86 COM

我有一个x64服务器,因为我的库被编译为AnyCPU,运行在x64下。 我们需要访问在x86下注册的COM组件。 我对COM的了解不够,我的谷歌search引导我无处可去。 问题:对于COM组件,我可以使用从x64到x86的符号registry链接吗? 我是否还需要在x64下注册COM组件? 我可以(在这里的任何声明…)? 谢谢。

c ++ / cli将(托pipe)委托传递给非托pipe代码

如何将托pipeC ++(C ++ / CLI)的函数指针传递给非托pipe方法? 我阅读了一些文章,比如MSDN上的这篇文章,但它描述了两个不同的程序集,而我只需要一个。 这是我的代码: 1)标题(MyInterop.ManagedCppLib.h): #pragma once using namespace System; namespace MyInterop { namespace ManagedCppLib { public ref class MyManagedClass { public: void DoSomething(); }; }} 2)CPP代码(MyInterop.ManagedCppLib.cpp) #include "stdafx.h" #include "MyInterop.ManagedCppLib.h" #pragma unmanaged void UnmanagedMethod(int a, int b, void (*sum)(const int)) { int result = a + b; sum(result); } #pragma managed […]

是否有可能从C#.Net调用C函数

我有一个C库,并希望从C#应用程序的这个库中调用函数。 我试图通过添加C库文件作为链接器input并添加源文件作为额外的依赖关系来在C库上创build一个C ++ / CLI包装器。 有没有更好的方法来实现这一点,因为我不知道如何将C输出添加到C#应用程序。 我的C代码 – __declspec(dllexport) unsigned long ConnectSession(unsigned long handle, unsigned char * publicKey, unsigned char publicKeyLen); 我的CPP包装 – long MyClass::ConnectSessionWrapper(unsigned long handle, unsigned char * publicKey, unsigned char publicKeyLen) { return ConnectSession(handle, publicKey, publicKeyLen); }

一个简单的C#DLL – 我如何从Excel,Access,VBA,VB6中调用它?

我有一个简单的类库用C#编写。 using System; namespace TestDll { public class Test { public string HelloWorld { get { return "Hello World"; } } } } 我的问题是如何从Microsoft Office Visual Basic(我认为是VB6)调用这个HelloWorld函数? 我的第一步是添加DLL作为参考 – 但在浏览和select编译的DLL消息“无法添加对指定文件的引用”。 被抛出 任何人都可以指出我正确的方向为什么/如何得到这个工作? 在此先感谢!

将数组写入Excel范围

我正在尝试使用以下代码将对象数组中的数据写入Excel中的某个范围,其中objData只是一个string数组: private object m = System.Type.Missing; object[] objData = getDataIWantToWrite(); Range rn_Temp; rn_Temp = (Range)XlApp.get_Range(RangeName, m); rn_Temp = rn_Temp.get_Resize(objData.GetUpperBound(), 1); rn_Temp.value2 = objData; 这非常接近的工作,问题是范围被填充,但每个单元格获取objData中的第一个项目的objData 。 反向工作,即 private object m = System.Type.Missing; object[] objData = new object[x,y] Range rn_Temp; rn_Temp = (Range)XlApp.get_Range(RangeName, m); rn_Temp = rn_Temp.get_Resize(objData.GetUpperBound(), 1); objData = (object[])rn_Temp.value2; 将返回一个包含工作表中所有值的数组,所以我不确定为什么阅读和分配的工作方式不同。 有没有人做过这个成功? 我目前正在编写单元格的数组,但它需要处理大量(> 50,000)的行,这是非常耗时的。