Прямо сейчас я изучаю металл C ++, чтобы создать 3D -рендер. Однако для движения камеры нет нативного способа прочитать события клавиатуры MacOS и мыши в C ++. Из-за этого я создал Swift Inpint Manager и использую взаимодействие Swift C ++ для инициализации класса и привлечения его методов, например: < /p>
class Renderer
{
public:
Renderer();
private:
ApplicationName::InputManager* input_manager;
}
Renderer::Renderer()
{
input_manager->init();
}
< /code>
Проблема заключается в том, что в файле _swiftcxxinteropopecualboy.h я получаю поток 1: exc_bad_access (code = 1, address = 0x0) ошибка: < /p>
class _impl_RefCountedClass {
public:
static SWIFT_INLINE_THUNK void *_Nonnull getOpaquePointer(
const RefCountedClass &object) {
return object._opaquePointer; // this line
}
};
< /code>
Я совершенно новичок в совместимости Swift C ++, поэтому я не знаю, в чем проблема, но, по -видимому, это вызвано управлением памятью Свифта. Любая помощь будет очень признателен!import Foundation
import GameController
public class InputManager {
private var keyboard: GCKeyboard?
private var mouse: GCMouse?
private var mouseDeltaX: Float = 0.0
private var mouseDeltaY: Float = 0.0
private var keyStates: [String: Bool] = [:]
public init() {
setupInputDevices()
}
private func setupInputDevices() {
// Setup keyboard
keyboard = GCKeyboard.coalesced
keyboard?.keyboardInput?.keyChangedHandler = { [weak self] (keyboard, key, keyCode, pressed) in
self?.keyStates[key.sfSymbolsName!] = pressed
}
// Setup mouse
mouse = GCMouse.current
mouse?.mouseInput?.mouseMovedHandler = { [weak self] (mouse, deltaX, deltaY) in
self?.mouseDeltaX += Float(deltaX)
self?.mouseDeltaY += Float(deltaY)
}
}
public func isKeyPressed(_ keyName: String) -> Bool {
return keyStates[keyName] ?? false
}
public func getMouseDeltaX() -> Float {
let delta = mouseDeltaX
mouseDeltaX = 0.0 // Reset after reading
return delta
}
public func getMouseDeltaY() -> Float {
let delta = mouseDeltaY
mouseDeltaY = 0.0 // Reset after reading
return delta
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... interopera
Thread 1: Exc_BAD_ACCESS (code = 1, address = 0x0) Ошибка с совместимостью Swift C ++ ⇐ C++
Программы на C++. Форум разработчиков
1751253799
Anonymous
Прямо сейчас я изучаю металл C ++, чтобы создать 3D -рендер. Однако для движения камеры нет нативного способа прочитать события клавиатуры MacOS и мыши в C ++. Из-за этого я создал Swift Inpint Manager и использую взаимодействие Swift C ++ для инициализации класса и привлечения его методов, например: < /p>
class Renderer
{
public:
Renderer();
private:
ApplicationName::InputManager* input_manager;
}
Renderer::Renderer()
{
input_manager->init();
}
< /code>
Проблема заключается в том, что в файле _swiftcxxinteropopecualboy.h я получаю поток 1: exc_bad_access (code = 1, address = 0x0) ошибка: < /p>
class _impl_RefCountedClass {
public:
static SWIFT_INLINE_THUNK void *_Nonnull getOpaquePointer(
const RefCountedClass &object) {
return object._opaquePointer; // this line
}
};
< /code>
Я совершенно новичок в совместимости Swift C ++, поэтому я не знаю, в чем проблема, но, по -видимому, это вызвано управлением памятью Свифта. Любая помощь будет очень признателен!import Foundation
import GameController
public class InputManager {
private var keyboard: GCKeyboard?
private var mouse: GCMouse?
private var mouseDeltaX: Float = 0.0
private var mouseDeltaY: Float = 0.0
private var keyStates: [String: Bool] = [:]
public init() {
setupInputDevices()
}
private func setupInputDevices() {
// Setup keyboard
keyboard = GCKeyboard.coalesced
keyboard?.keyboardInput?.keyChangedHandler = { [weak self] (keyboard, key, keyCode, pressed) in
self?.keyStates[key.sfSymbolsName!] = pressed
}
// Setup mouse
mouse = GCMouse.current
mouse?.mouseInput?.mouseMovedHandler = { [weak self] (mouse, deltaX, deltaY) in
self?.mouseDeltaX += Float(deltaX)
self?.mouseDeltaY += Float(deltaY)
}
}
public func isKeyPressed(_ keyName: String) -> Bool {
return keyStates[keyName] ?? false
}
public func getMouseDeltaX() -> Float {
let delta = mouseDeltaX
mouseDeltaX = 0.0 // Reset after reading
return delta
}
public func getMouseDeltaY() -> Float {
let delta = mouseDeltaY
mouseDeltaY = 0.0 // Reset after reading
return delta
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79684216/thread-1-exc-bad-access-code-1-address-0x0-error-with-swifts-c-interopera[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия