我是一名入门级程序员,所以请在回复中加以描述.
我试图在我的C#.net应用程序中使用作为.jar文件提供的Java API.我不太了解Java,但是当我尝试运行它时,这个.jar文件说"没有主类清单属性"所以这意味着它是一个库?此Java API还附带一个.java文件,该文件显示了如何使用该库,但我看不到.jar中的代码.
我在这个网站上发现了这个问题,其中一个答案是:"以简单的方式,你可以将你的java类打包到jar文件然后在C#中使用Process类来执行和映射IO流." 我熟悉C#中的Process类,但我不明白如何在C#.net项目中使用它来使用Java库.
这可能吗?或者那个答案是不正确的?
如果是这样,你能解释我如何在我的C#应用程序中使用.jar库.
我目前正在尝试使用以下代码将对象数组中的数据写入Excel中的范围,其中objData只是一个字符串数组:
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;
Run Code Online (Sandbox Code Playgroud)
这几乎可以工作,问题是范围被填满但是每个单元格都获得了第一个项目的值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;
Run Code Online (Sandbox Code Playgroud)
将返回一个包含工作表中所有值的数组,所以我不确定为什么阅读和赋值的工作方式不同.
有没有人成功地做过这件事?我目前正逐个单元地编写阵列,但它需要处理很多(> 50,000)行,因此非常耗时.
我正在尝试使用OpcRcw.da.dll.如果我在测试控制台项目中互操作这个dll一切正常,但如果我构建dll项目来进行我的互操作体操并将我的库引入我的控制台项目中,我收到此错误:
无法使用已与其基础RCW分离的COM对象.
需要对类lib项目做些什么来不杀死RCW ref?
我有一些COM组件,我从一些c#dll调用.
我还有一个使用该.dll的winforms应用程序.
当我关闭应用程序时,我得到以下异常:
无法使用已与其基础RCW分离的COM对象.
堆栈跟踪显示此异常来自.dll中的析构函数.我实现了这个析构函数来调用COM中的一些清理方法.
为什么会这样?如何最好地解决它?
我有一个C库,需要注册回调函数来定制一些处理.回调函数的类型是int a(int *, int *).
我正在编写类似于以下内容的C++代码,并尝试将C++类函数注册为回调函数:
class A {
public:
A();
~A();
int e(int *k, int *j);
};
A::A()
{
register_with_library(e)
}
int
A::e(int *k, int *e)
{
return 0;
}
A::~A()
{
}
Run Code Online (Sandbox Code Playgroud)
编译器抛出以下错误:
In constructor 'A::A()',
error:
argument of type ‘int (A::)(int*, int*)’ does not match ‘int (*)(int*, int*)’.
Run Code Online (Sandbox Code Playgroud)
我的问题:
我需要能够从C++调用任意C#函数.http://www.infoq.com/articles/in-process-java-net-integration建议使用ICLRRuntimeHost :: ExecuteInDefaultAppDomain(),但这只允许我调用具有以下格式的方法:int method(string arg)
调用任意C#函数的最佳方法是什么?
我使用标准的Microsoft.Office.Interop.Excel将1200 X 800矩阵(indexMatrix)导出到excel文件.该应用程序工作,只是它真的非常慢(即使对于100 x 100矩阵).我还通过TextWriter导出文本文件,它几乎可以立即工作.有没有办法更快地导出到excel文件?
这是我的代码:
Excel.Application xlApp=new Excel.Application();
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
//xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
for (int i = 0; i < 800; i++) //h
for (int j = 0; j < 1200; j++)
xlWorkSheet.Cells[i+1,j+1] =indexMatrix[i][j];
xlWorkBook.SaveAs("C:\\a.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
MessageBox.Show("Excel file created , you can find the file c:\\csharp-Excel.xls");
Run Code Online (Sandbox Code Playgroud) 我想扩展一个带有一些新功能的大型C项目,但我真的想用Python编写它.基本上,我想从C代码调用Python代码.但是,像SWIG这样的Python-> C包装器允许OPPOSITE,即编写C模块并从Python调用C语言.
我正在考虑一种涉及IPC或RPC的方法(我不介意有多个进程); 也就是说,让我的纯Python组件在一个单独的进程中运行(在同一台机器上),让我的C项目通过从套接字(或unix管道)写入/读取来与之通信.我的python组件可以读/写socket来进行通信.这是一种合理的方法吗?还有更好的东西吗?像一些特殊的RPC机制?
感谢到目前为止的答案 - 但是,我想专注于基于IPC的方法,因为我希望将我的Python程序作为我的C程序在一个单独的过程中.我不想嵌入Python解释器.谢谢!
在没有指向MSDN的情况下,有人可以简明扼要地解释每个问题的目的以及何时使用它们.(IntPtr,SafeHandle和HandleRef)
任何人都可以分享如何从python代码调用一个简单的C#库(实际上是它的WPF)的工作示例?(我已经尝试过使用IronPython,并且在我的python代码使用不受支持的CPython库时遇到了太多麻烦所以我想尝试反过来并从Python调用我的C#代码).
这是我正在玩的例子:
using System.Runtime.InteropServices;
using System.EnterpriseServices;
namespace DataViewerLibrary
{
public interface ISimpleProvider
{
[DispIdAttribute(0)]
void Start();
}
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
public class PlotData : ServicedComponent, ISimpleProvider
{
public void Start()
{
Plot plotter = new Plot();
plotter.ShowDialog();
}
}
}
Run Code Online (Sandbox Code Playgroud)
绘图仪是一个绘制椭圆的WPF窗口
我不知道如何从我的python中调用这段代码.有什么建议?