2012-03-13 294 views
0

我一直在試圖找到一種方法來將std :: vector從本機C++代碼傳遞到C++/CLI管理的類。我是C++新手(非託管),因此我沒有這樣的運氣並不奇怪。我想指出的是,如何將std:vector(任何類型的,但最好是double或int)轉換爲託管C++/CLI數組和/或C#數組。也許這是不可能完成的,因爲我只看到相反的例子(即C#到本地C++),例如參見「convert System::array to std::vector」。下面我總結了我的失敗嘗試。從本地C++傳遞std :: vector到託管數組在C++/CLI和/或C#

我可以通過一個雙載體如

vector<vector<double> > dblvec 

到一個本地C++類(其中,該類是在C++/CLI項目)中所定義的方法,但不進入在REF定義的方法類(也在C++/CLI項目中)。該comiler抱怨該方法(在ref類中)不存在(候選函數不可訪問)。我認爲這與矢量有關>被強制爲一個私有變量(例如參見C++ CLI error C3767: candidate function(s) not accessible)。

任何幫助將不勝感激。

回答

0

是的,您對原因基本上是正確的(本機類型不在程序集外部公開)。而且由於模板化類型不能公開(即使使用make_public編譯指示),您也無法輕鬆修復它。

你想讀的解決方法如下: Best workaround for compiler error C2158: make_public does not support native template types

祝你好運!

+0

非常感謝馬特的非常快速回復。我很欣賞這一點。你建議的解決方法是由你設計的,所以我想你是一個很好的人獲得建議!我會在明天看看你的解決方法,看看我能否理解它並讓它適合我的情況。 – dandar 2012-03-13 18:29:54

-1

常見問題...查看以下...

#include <vector> 

// ref https://msdn.microsoft.com/en-us/library/ms235281.aspx 
// compile with: /clr /LD 
#include <windows.h> 
#include <vcclr.h> 
#using <System.dll> 

using namespace System; 

// common issues for less complex work addressed in the following links 
// ref http://stackoverflow.com/questions/19163839/how-to-access-class-in-c-cli-from-c 
// ref https://drthitirat.wordpress.com/2013/05/30/combine-gui-of-c-with-c-codes/ 
// ref https://drthitirat.wordpress.com/2013/06/03/use-c-codes-in-a-c-project-wrapping-native-c-with-a-managed-clr-wrapper/ 
// ref http://stackoverflow.com/questions/31417688/passing-a-vector-array-from-unmanaged-c-to-c-sharp/31418911#31418911 
// ref http://en.cppreference.com/w/cpp/language/try_catch 
相關問題