Подключил твою dll, но там не хватает ещё какого-то контрола Grid.
Но, скорее всего, проблема понятна. Многие контролы меняют текущую папку под себя, так поступает даже штатный микрософтовский диалог открытия файлов из Common Control. Если инициализация контрола проходит до первого обращения к функции из dll, то потом dll может быть не найдена. Дело в том, что dll ищется в текущей папке, а не в App.Path, и ищется при первом обращении.
Нужно либо перед инициализацией контрола (можно первой строкой в программе) однократно вызвать любую ф-цию из dll, например "x = ARGB(0,0,0,0)", либо перед первым обращением уже по тексту программы выполнить "ChDir App.Path". Первый вариант предпочтительнее, второй может сломать работу уже твоего контрола.
А вообще, отказаться бы вообще от всех этих ActiveX контролов и референсов, с ними сплошные проблемы, то версия не та, то регистрация у конечного пользователя не идёт потому, что не из-под админа.
Можешь посмотреть исходник готовой игры на SR2D: https://yadi.sk/d/wUH4YsWj3R3ZnX
Там звук на DirectSound, использована эта tlb: https://gamedev.ru/community/bycircle/forum/?id=207643
У EXE никаких зависимостей, всё просто и надёжно.
В отладке может быть проблема - при остановке на стопе или на ошибке отладка падает, это виноват DirectSound, он на такое не рассчитан, просто при отладке отключай звук, снимай комментарий со строки:
'#Const SoundDisable = True
В принципе, это под "Танчики" переделывается просто, можешь даже оставить готовые решения, например, дым от снарядов и взрывов. Переделка в основном коснётся управления и ИИ противников.
если я верно тебя понял, то сделал вот так:
Dim X As Integer
Dim tmpPicturePath As String
X = ARGB(0, 0, 0, 0)
tmpPicturePath = "F:\1.png"
SprTest.Init 200, 200
SprTest.LoadFromFile tmpPicturePath
SprTest.PaintToDevice Form1.hDCТеперь ошибка вылетает в строке:
X = ARGB(0, 0, 0, 0)
Ошибка такая же: "file not found SR2D"
Кинул тебе на почту grid, если ещё нужны какие-то файлы, пиши.
Исходники твои обязательно посмотрю, просто хочу разобраться и запустить уже твой движ.
Я вот думаю, а какой контрол может мешать? как думаешь?
Memfivosfey
> сделал вот так
Вопрос - где ты это сделал, строку с ARGB нужно вписать в Form_Load первой запускаемой формы первой строкой, или в Sub Main, если запуск через него.
Mikle, запулил его в SUB Main, самой первой строкой, прежде всех строк.
Dim X As Long
X = ARGB(0, 0, 0, 0)Ошибка не ушла. Появляется прямо на этой строке.
Memfivosfey
Распаковал проект, зарегистрировал prjSharedFunction.dll, добавил vsflex8.ocx, и то, и другое занёс в References, проект не пустился на строке VerifyExistDir, такой ф-ции нет. Заремил эти строки - проект остановился на Stop в sub_DrawGameFieldSR2D. Убрал Stop - проект пустился, ошибок нет.
Видимо эта VerifyExistDir, которой у меня почему-то нет, и меняет Path.
Попробуй в Sub Main перед X = ARGB(0, 0, 0, 0) добавить строку:
ChDir App.Path
Mikle
> Попробуй в Sub Main перед X = ARGB(0, 0, 0, 0) добавить строку:
>
> ChDir App.Path
Сработало!!!
Спасибо, Дружище, прости, что напряг, теперь буду разбираться с этой функцией... почему она так делает.
Mikle привет, не забил еще?) на 64
SilentPrayerCG
Перевёл часть на Си, тестирую в 32 битах. Как переведу всё - дам тебе скомпилировать в 64 бита.
Mikle
оки
SilentPrayerCG
Можешь посмотреть мои мучения: https://gamedev.ru/code/forum/?id=242177
Mikle
Посмотрел.
Слишком сложно это все для меня конечно.
Про инструкции, у меня раньше был Phenom II x6 и в нем не было инструкции SSE4.1 или 4.2 (ну точнее обеих)
И были проблемы, потому что Corona Render требует 4.2 вроде, я использовал легаси версию, на данный момент они уже её не выпускают.
Товарищи свой рендер пишут, гпу (pt, mlt итд) тоже приходилось под меня подстраиваться, выкидывать некоторые инструкции которых у меня не было, и заменять их на код обычный, как я понял.
Еще вспомнил, FStorm Render тоже у меня не заводился, он гпу, но трансляция сцены похоже использовала 4.2 - мне разраб написал. Который как я потом выяснил, один из бывших постояльцев нашего полумертвого 3дцентра, он потом ушел в Otoy и сейчас вот этот фшторм пилит.
Сейчас у меня ryzen 2700x и думаю пока можно забыть про эти проблемы с инструкциями.
SilentPrayerCG
> у меня раньше был Phenom II x6 и в нем не было инструкции SSE4.1 или 4.2 (ну
> точнее обеих)
Я не буду использовать выше SSE2. А до сих пор вообще был MMX.
>Я не буду использовать выше SSE2.
Можно перегрузку функций устроить.
SSE 4.1
insertps/extractps удобно очень вставка/извлечение полей.
pinsrb/w/d/q и pextrb/w/d/q - очень удобные и шустрые вставка/извлечение байтов, слов и т.д.
roundps/roundpd удобно и шустро округлять по 2/4 значения сразу.
dpps, dppd - dot product встроенный.
ptest - проверка на ноль сразу 4-х значений.
Для векторных операций все это нужно.
4.2 мне только popcnt (подсчет битов нужен),
а так еще куча функций побитовых операций (шуффлинг, блендинг и т.п.).
Я наоборот от MMX отказался, хотя он и немного шустрее чем XMM.
Тема в архиве.