我正在嘗試一個小的互操作應用程序,其中我從C#調用了一些C++方法。我有一個非常基本的例子,用於調用一個方法並返回一個整數,這很好。將C++數組返回到C#
InteropApp.h
#ifdef DLLFUNCTIONEXPOSETEST_EXPORTS
#define DLLFUNCTIONEXPOSETEST_API __declspec(dllexport)
#else
#define DLLFUNCTIONEXPOSETEST_API __declspec(dllimport)
#endif
extern "C" DLLFUNCTIONEXPOSETEST_API int fnSumofTwoDigits(int a, int b);
InteropApp.cpp
#include "stdafx.h"
#include "DLLFunctionExposeTest.h"
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
DLLFUNCTIONEXPOSETEST_API int fnSumofTwoDigits(int a, int b)
{
return a + b;
}
C#InteropAppTest
static class TestImport
{
[DllImport("DLLFunctionExposeTest.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "fnSumofTwoDigits")]
public static extern int fnSumofTwoDigits(int a, int b);
}
public partial class MainWindow : Window
{
public MainWindow()
{
try
{
InitializeComponent();
int g = TestImport.fnSumofTwoDigits(2, 1);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
在AB Ove C++應用程序,我想要一種方法返回一個strings
的數組,另一種方法返回一個integers
的數組。但是,正如我讀過的一樣,如果這涉及編組,我很困惑。方法原型對於C++和C#都會是什麼樣子?在C#應用程序中還會改變什麼來調用C++數組返回函數?
對於上面的問題,很容易得到一個簡單的例子,因爲我無法找到任何簡單的例子來開始。
你有什麼試過的?你的意思是什麼類型? 'std :: string'(或'char *'?)和'int'?或者沒有關係? – svick 2012-02-18 10:22:44
@svick:我寧願以'char *'和'int'數組返回方法開始。 – Cipher 2012-02-18 10:37:27