Visual C++ 中的链接器错误 2022

问题描述 投票:0回答:1

我有以下头文件(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 作为返回类型时才会发生此错误,当我将它用于一般处理时它也可以正常工作。

c++ visual-studio-2010 visual-c++ clr cliext
1个回答
0
投票

我在尝试将 cliext::vectorSystem::String^ 作为参数传递给函数时遇到了同样的错误。如果我声明一个 cliext::vectorSystem::String^ 类型的变量,那么错误就消失了(即使我没有在我的程序中的任何地方使用这个变量)。

© www.soinside.com 2019 - 2024. All rights reserved.