у меня есть следующий файл заголовка (data.h):
#pragma once
#include <cliext\vector>
#include <msclr\marshal_cppstd.h>
using namespace msclr::interop;
using namespace MySql::Data::MySqlClient;
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
ref class data
{
private:
bool connect(MySqlConnection^ &conDatabase);
MySqlCommand^ query(String^ qry,MySqlConnection^ conDatabase);
public:
cliext::vector< String^ > viewCourses(int department,int sem);
};
и следующий файл cpp (data.cpp):
#include "StdAfx.h"#include "data.h"
bool data::connect(MySqlConnection^ &conDatabase)
{
String ^constring=L"datasource=localhost;port=3306;username=root;password=root";
conDatabase=gcnew MySqlConnection(constring);
return true;
}
MySqlCommand^ data::query(String^ qry,MySqlConnection^ conDatabase)
{
MySqlCommand ^cmdDatabase=gcnew MySqlCommand(qry,conDatabase);
return cmdDatabase;
}
cliext::vector< String^ > data::viewCourses(int department,int sem)
{
cliext::vector< String^ > courses;
return courses;}
Это дает мне следующую ошибку компоновщика:
error LNK2022: metadata operation failed (801311D7) : Differing number of fields in duplicated types (cliext.impl.vector_impl<System::String ^,0>):
Это происходит только всякий раз, когда я пытаюсь использовать cliext :: vector в качестве возвращаемого типа. Эта ошибка исчезает, когда я использую std :: vector< std :: string> в качестве возвращаемого типа, но я хочу вернуть вектор String ^. Я не могу понять, что является причиной этой ошибки. Эта ошибка возникает только при использовании cliext :: vector в качестве возвращаемого типа, когда я использую его для общей обработки, то также он работает нормально.
Задача ещё не решена.
Других решений пока нет …