c ++ CLI Экспорт void return __declspec (dllexport) нельзя применить к функции с соглашением о вызовах __clrcall - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь экспортировать некоторые void / функции из C ++ Cli, который оборачивает функции C # .Net.

В данный момент я могу правильно экспортировать методы, которые возвращают целочисленное значение, но когда я пытаюсь экспортироватьVoid, я получаю сообщение об ошибке:

Ошибка C3395 «Test2»: __declspec (dllexport) нельзя применить к функции с соглашением о вызовах __clrcall ClassLibrary1

Этополный код:

#pragma once

using namespace System;
using namespace System::Reflection;
using namespace RobinHoodLibrary;

namespace ClassLibrary1 {

    public ref class Class1
    {
        // TODO: Add your methods for this class here.
        RobinHood^ robin = gcnew RobinHood();

        public: int Add(int Number1, int Number2)
        {
            return robin->Add(Number1, Number2);
        }

        public: System::Void Test()
        {
            robin->Test();
        }

        public: int Test1(int i)
        {
            return robin->Test1(i);
        }

        public: System::Void Test2(String^ txt)
        {
            robin->Test2(txt);
        }

    };
}

extern __declspec(dllexport) int Add(int Number1, int Number2) {
    ClassLibrary1::Class1 c;
    return c.Add(Number1, Number2);
}

extern __declspec(dllexport) void Test() {
    ClassLibrary1::Class1 c;
    c.Test();
    return;
}

extern __declspec(dllexport) int Test1(int i) {
    ClassLibrary1::Class1 c;
    return c.Test1(i);
}

extern __declspec(dllexport) System::Void Test2(String^ txt) {
    ClassLibrary1::Class1 c;
    c.Test2(txt);   
}

Я могу легко экспортировать метод Add, Test и Test1, но не Test2.

Как я могу это исправить?

Благодаря поддержке

1 Ответ

0 голосов
/ 15 февраля 2019

AFAIK. Невозможно экспортировать методы с типами C ++ / CLI в аргументах или возвращаемых значениях.Поэтому вы должны использовать const wchar_t * или std :: wstring в качестве параметра вместо String ^.

...