@Klucva

Как присвоить значения переданным переменным из C#?

У меня есть код в C#, который вызывает функцию из dll и передаёт туда 2 переменные:
[DllImport("some.dll")]
private static extern bool someFunction(string source, ref long num, ref long num2);

public void someOtherFunction(string source)
{
    long num = 0L;
    long num2 = 0L;
    bool flag = this.someFunction(source, ref num, ref num2);
    Console.WriteLine(num);
    Console.WriteLine(num2);
}


Как мне в dll на C++ присвоить значение переменным num и num2, чтобы после выводилось не 0, а те значения, которые я указал в dll?
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
vabka
@vabka
Токсичный шарпист
Поправил ваш код, чтобы он работал:
#define sizeof_var( var ) ((size_t)(&(var)+1)-(size_t)(&(var)))

extern "C" bool __declspec(dllexport) someFunction(std::string source, int64_t* num, int 64_t* num2) {
    std::vector<char> bytes(source.begin(), source.end());
    bytes.push_back('\0');
    char* c = &bytes[0];
    *num = *c; // ???
    *num2 = sizeof_var(c);
    return true;
}


Мне кажется, вы хотите чего-то странного.
Расскажите подробнее, зачем вам это.
Вполне возможно, что для этого не нужно использовать pinvoke
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы