Harici bir uygulama ile kullanılması gereken yöntemleri içeren bir C# sınıfı kitaplığım var. Ne yazık ki bu harici uygulama sadece C/C++ 'da harici API'leri desteklemektedir.Bir diziyi C++ ile C# arasında taşımanın en kolay yolu, onu değiştirin ve C++
Şimdi bir C++ dll ve C# DLL arasında çalışan çok basit bir COM örneği elde etmeyi başardım, ancak dizi verilerinin etrafında nasıl hareket edebileceğime takılıyorum.
Bu benim COM yoluyla iletişim web'de bulunan sadece biraz örnek olarak, şimdiye kadar ne var ise: Bu benim C# sınıfında eklenti yöntemini çağırmak için çalışıyor
DLL_EXPORT(void) runAddTest(int add1,long *result) {
// Initialize COM.
HRESULT hr = CoInitialize(NULL);
// Create the interface pointer.
IUnitModelPtr pIUnit(__uuidof(UnitModel));
long lResult = 0;
// Call the Add method.
pIUnit->Add(5, 10, &lResult);
*result = lResult;
// Uninitialize COM.
CoUninitialize();
}
. Bir çiftler dizisini almak ve döndürmek için bunu nasıl değiştirebilirim? (hasta aynı zamanda çizgiden aşağı dizelerle de yapmalı).
Yönetilmeyen bir dizi kullanmam gerekiyor, bu diziyi bazı hesaplamalar için C# sınıfına geçirmeliyim ve ardından sonuçları özgün işlev çağrısı (yönetilmeyen) C++ içinde belirtilen dizi başvurusuna iletin.
böyle bir işlevi açığa gerekir:
* kalsin - katına diziye referans
* calcOut - değeri - çiftlerde
Numin dizisine referans girdi dizisinin boyutu
DLL_EXPORT(void) doCalc(double *calcIn, int numIn, double *calcOut)
{
//pass the calcIn array to C# class for the calcuations
//get the values back from my C# class
//put the values from the C# class
//into the array ref specified by the *calcOut reference
}
Ben düşünüyorum Harici uygulama için bir C++ \ CLI DLL kullanabilirim, bu yüzden bu düz COM'dan daha kolaysa, o zaman buna bakmak isteyeceğim.
Öncelikli olarak bir C# geliştiricisiyim, ancak Interop ve C++'un derin sonlarında atılmış olduğum için lütfen nazik olun.