تنظيم السلاسل، من C++ إلى C#:"التحويل غير مدعوم من قبل المكتبة"

StackOverflow https://stackoverflow.com/questions/1645145

سؤال

ملخص:

عند محاولة استخدام التنظيم لتمرير بيانات السلسلة إلى C++ DLL من C#، أحصل على

'msclr::interop::error_reporting_helper<_To_Type,_From_Type>::marshal_as':لا يتم دعم هذا التحويل بواسطة المكتبة أو لم يتم تضمين ملف الرأس اللازم لهذا التحويل.يرجى الرجوع إلى الوثائق حول "كيفية:تمديد مكتبة التنقل 'لإضافة طريقة التنقل الخاصة بك.C: Program Files Microsoft Visual Studio 9.0 vc include msclr marshal.h 203

أنا أستخدم Visual Studio 2008 Professional Edition؛فيجوال سي++ 2008؛نت 3.5.

التفاصيل:

والطريقة المعنية (في أبسط صورها) هي كما يلي:

LibDSSDLL::DssOutputSocketFacade::DssOutputSocketFacade(const System::String^ name)
{
    marshal_context^ context = gcnew marshal_context();
    std::string n = context->marshal_as<std::string>(name);

    this->socket = new DssOutputSocket( n);
}

يتضمن الرأس الترتيب الذي تم تقديمه به إلى المعالج المسبق

#include "StdAfx.h"
#include <string>
#include <iostream>
#include <msclr\marshal_cppstd.h>

#using <mscorlib.dll>
using namespace System;
using namespace msclr::interop;

يبدو لي هذا كما لو أنه يتوافق مع المثال المذكور هنا وإلى الوثائق الموجودة على MSDN (يرفض Stack Overflow السماح لي بالاستشهاد بعنوان URL ثانٍ)؛ولكن من الواضح أن مترجم C++ لا يجد التحويل الذي يحتاجه.

ماذا فاتني؟أعترف أنني لست خبيرًا جدًا في لغة C++ أو Windows.

هل كانت مفيدة؟

المحلول

الوثائق لا تقول أنه يأخذ مقدار ثابت سلسلة ^.إزالة الثابت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top