没有 C++ 经验,所以在这里请求一些帮助。我得到的是一个 .net dll,我正在编写一个包装器,以便以后可以在 c++ 和 vb6 项目中使用 .net dll。
到目前为止我的代码:
我想调用的 c# 类:
public class App
{
public App(int programKey, List<string> filePaths)
{
//Do something
}
}
我的 C++ 项目:
static int m_programKey;
static vector<std::string> m_fileNames;
void __stdcall TicketReportAPI::TrStart(int iProgramKey)
{
m_programKey = iProgramKey;
};
void __stdcall TicketReportAPI::TrAddFile(const char* cFileName)
{
string filename(cFileName);
m_fileNames.push_back(filename);
}
void __stdcall TicketReportAPI::TrOpenDialog()
{
if(m_fileNames.size()> 0)
{
List<String^> list = gcnew List<String^>();
for(int index = 0; index < m_fileNames.size(); index++)
{
std::string Model(m_fileNames[index]);
String^ sharpString = gcnew String(Model.c_str());
list.Add(gcnew String(sharpString));
}
App^ app = gcnew App(m_programKey, list);
}
else
App^ app = gcnew App(m_programKey);
}
如果我试图编译 c++ 项目,我会收到以下错误:
App(int,System::Collections::Generic::List ^)':无法从 'System::Collections::Generic::List' 转换为 'System::Collections::Generic::List ^'
是否可以将托管列表从 c++ 传递到 .net c#?如果没有,你们建议我将字符串数组传递给我的 c# 程序集吗?
感谢您的帮助,提前致谢。