Как конвертировать строку Ruby в указатель на символ C ++ - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь вызвать функцию Win32Api dll в Ruby:

LoadTexture = Win32API.new('System/SFML.dll', 'sfml_load_texture', 'p', 'p')

Мой код вызова:

LoadTexture.call("folder/file.png")

Моя вторая попытка преобразовать данные (просто работа с wchar_t)

  buf = ''

  for i in 0..filename.size - 1
    buf += filename[i] + 0.chr
  end

  buf += 0.chr * 260

  LoadTexture.call(buf)

Функция DLL enter image description here

Я получаю

Не удалось загрузить изображение "=» `¶È; ð¿wc H».Причина: невозможно открыть

1 Ответ

0 голосов
/ 18 июня 2018

1) Если сигнатура функции имеет параметр char *, вам не следует пытаться протолкнуть wchar_t s через этот параметр.Это не будет работать.

2) ваш метод создания wchar_t не будет работать для большинства строковых кодировок.

3) Win32API.new требует массив строк в качестве третьего параметра, если яправильно понимать документы.

4) Вы описываете две разные попытки, но выдает только одно сообщение об ошибке.Неясно, к какой попытке относится это сообщение об ошибке.

5) sfml имеет привязку ruby.Проект sfml явно ссылается на привязку ruby.Вы должны попробовать существующую рубиновую привязку, прежде чем пытаться свернуть свою собственную.Загрузка текстур, по-видимому, покрыта переплетом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...