Нет ошибки атрибута при импорте всех модулей против импорта определенных функций из модуля

    channel.setCallback(channelCallback);

Это проблема. FMod - неуправляемый код. Здесь вы создаете объект-делегат и передаете его неуправляемому коду. Проблема в том, что сборщик мусора не может отслеживать ссылки, хранящиеся в собственном коде. Следующая мусорная коллекция найдет no ссылки на объект и соберет его. Kaboom, когда нативный код выполняет обратный вызов.

Вам нужно сохранить ссылку самостоятельно, чтобы этого не произошло:

public class Music
{
    private SomeDelegateType callback
    //...
    public Music(string file)
    {
        File = file;
        callback = new SomeDelegateType(channelCallback);
    }

    public virtual void Play()
    {
        Audio.System.playSound(channel == null ? CHANNELINDEX.FREE : CHANNELINDEX.REUSE, music, false, ref channel);
        music.addSyncPoint(500, TIMEUNIT.MS, "wooo", ref syncPtr);
        channel.setCallback(callback);
    }

Вам нужно найти фактический тип делегата из Код обертки FMod, я просто догадывался о «SomeDelegateType».

-1
задан Nitish 18 January 2019 в 08:09
поделиться

2 ответа

Из этот ответ : Когда вы используете оператор импорта, он всегда ищет фактический путь к модулю (и / или sys.modules); он не использует объекты модуля в локальном пространстве имен, которые существуют из-за предыдущего импорта.

Поэтому, если вы хотите использовать какой-либо объект из urllib, вам нужно ввести фактические объекты, которые вы хотите использовать:

import urllib.request

Вы также можете сделать что:

from urllib import request

fhand = request.urlopen('http://data.pr4e.org/romeo.txt')

0
ответ дан Quentin Laillé 18 January 2019 в 08:09
поделиться

Кажется, это работает:

from urllib import request

fhand = request.urlopen('http://data.pr4e.org/romeo.txt')
for line in fhand:
    print(line.decode().strip())

Вам нужно использовать другие модули: urllib.parse и urllib.error? в противном случае это выглядит нормально.

0
ответ дан The Anonymous Hacker 18 January 2019 в 08:09
поделиться
Другие вопросы по тегам:

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