2013-11-02 54 views
0

我用C++编写了我的程序visual studio 10,但现在我想让它的dll与visual c#的界面一起使用,我使用命令行参数在我输入如何让dll在visual C++中,我想与C#进行交互#

节目我看了教程从here,但我的代码是不小,我有行1000,所以我不能写这样

static __declspec(dllexport) double Add(double a, double b); 

为每一行和我也使用opencv图书馆,所以什么是另一种方式来创建C++程序的DLL,或者我怎么才能简单地使用它W ith c#界面。

+0

你想导出的每个函数都必须标记为'__declspec(dllexport)'。将您的输出文件类型更改为DLL。然后看看P/Invoke从C#调用它。 –

+0

@JonathonReinhart我的库像''opencv',我手动添加在我的程序中,自动传输到DLL或我需要在我的C#项目中再次配置它 – AHF

+0

只要DLL正确链接到OpenCV(静态或动态)你的C#程序不需要知道任何关于它的信息。 –

回答

0

两种程序可以通过多种方式进行交互。

即使使用__declspec (dllexport),也不会将其添加到程序的每一行。相反,您需要将其添加到“导出的函数”中。所以,你需要做的第一件事是创建你想从你的C++程序导出的函数列表。如果您对您的界面的外观有更深入的了解,那么您可以在这里获得更好的回应。

除了DLL之外,程序还可以通过其他方式进行交互。即使文件I/O是一种可能性,当没有其他方式可行时,一个程序作为输入写入文件而另一个程序读取它。

+0

我的输入是属于opencv的MAT形式的图像,我的输出是以文本文件的形式出现的,我尝试了在接口上显示文本文件输出的方式,它工作正常,但显示输入错误,但是我想知道我是否需要为c#配置opencv,即使我有整个程序的exe文件 – AHF

+0

实际上我在做什么是在c#项目的引用中使用我的C++代码exe文件,并使用它的process.start,但它给我的错误,我的项目的opencv,但是当我运行相同的程序与CMD它的作品,当我运行简单的程序的C + +,并在C#中包含它的EXE它与process.start和接口 – AHF

相关问题