@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?
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
Поправил ваш код, чтобы он работал:
#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
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы