Версия x64

Russian main discussion
  • Author
  • Message
Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Instructor, у меня всегда свежая (из CVS). (Сколько же там Warning-ов... приблизительно столько же при компиляции для Wine)
Вот Templates Speech - к версии 4.5.2 (к обоим 32 и 64 битным) по идее должны работать. Нужно что-бы кто-то владелец 64-бит потыкал, ибо отладить пока не могу.
SpellCheck - только 32 битная для 4.5.2, 64 битных реализаций любой орфографической системы пока не нашел.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

FeyFre
Warning'и потихоньку убираю.

Speech пишет нет какой-то dll.

Templates не вставляет файл:

Code: Select all

FILECONTENT fc = {hFile,(DWORD)-1,dc.nCodePage,dc.bBOM,NULL};
Надо:

Code: Select all

FILECONTENT fc = {hFile,(UINT_PTR)-1,dc.nCodePage,dc.bBOM,NULL};

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Speech пишет нет какой-то dll.
MSVCR90.DLL ?
Открутить бы им руки за такую систему. Компилятор умничает надо и не надо, а студия помогает. Нужно поставить в настройках статическую линковку с CRT(я потом гляну где оно нашло CRT вообще)
В Templates специально делал for-ы при формровании строк, что-бы не использовать memcpy, а компилятор-идиот цикл "оптимизирует" в вызов memcpy(и только x64, на 32 нормально) и матерится что не может линковаться, ибо я CRT отключил(взять что-ли на ассемблере написать?).
Templates не вставляет файл:
Поправим.
Не знаете часом какого-нибудь GUI-шного инструмента для работы с CVS? А то TortosieCVS как на зло ничего не умеет, коммандная строка и то лучше. Как посмотреть историю файла я так и не нашел, тем более получить визуальный diff.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

FeyFre
Компилятор умничает...
В StrFunc.h лежат xmemcpy и xmemset.
Не знаете часом какого-нибудь GUI-шного инструмента для работы с CVS?
http://akelpad.cvs.sourceforge.net ?

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Не дружит с кириллицей(changelog не почитать вообще). Да и в обозревать не особо хочется лазить по много раз в минуту. SourceForge на защищенных страницах(https) ползает хуже некуда.
В StrFunc.h лежат xmemcpy и xmemset.
А как им пользоваться? А то я включаю, а оно ничего не дало. Приходиться его то ли по два раза включать, с define-ами посередине, то ли ещё как-то по-другому шаманить.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

FeyFre
Я тоже TortoiseCVS пользуюсь. Правда ничего кроме Add/Update/Commit не использовал :)

Code: Select all

А как им пользоваться?
Можно просто код функций выдернуть.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

В StrFunc.h лежат xmemcpy и xmemset.
Можно просто код функций выдернуть.
Хахаха. Компилятор имел нас в виду. Единственный вызов xmemcpy он развернул inline а потом отпимизировал на всякий случай в вызов memcpy(в ассемблер смотрел... кстати забыл отключить генерацию в проекте в исходниках) :twisted: В общем с горем по полам получилось, но насчет оптимальности не ручаюсь.
Новые архивы с бинарниками/исходниками на тех же местах.

ЗЫ: у Вас

Code: Select all

void* xmemcpy(void *dest, const void *src, UINT_PTR count);
, я бы порекомендовал сделать

Code: Select all

void* xmemcpy(void *dest, const void *src, size_t count);
(или WINAPI-шный SIZE_T) так сразу понятнее для чего параметр.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

FeyFre
Templates стал отображать пустые папки в TreeView.

xmemcpy и xmemset на CVS имеют другой вид, именно для того, чтобы компилятор не подменял вызовом memcpy, memset.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Templates стал отображать пустые папки в TreeView.
Исправил(умножил на sizeof(WCHAR) :lol: ), перезалил.
xmemcpy и xmemset на CVS имеют другой вид, именно для того, чтобы компилятор не подменял вызовом memcpy, memset.
У меня компилятор на это смотрит. Изменил аргумент на UINT_PTR - та же история(см. Templates.c строчку 421)

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

FeyFre
Текущая версия xmemcpy выглядит так:

Code: Select all

void* xmemcpy(void *dest, const void *src, UINT_PTR count)
{
  unsigned char *byte_dest=(unsigned char *)dest;
  unsigned char *byte_src=(unsigned char *)src;

  //Special form of memcpy implementation to avoid
  //compiler from replace this code with memcpy call.
  if (byte_dest != byte_src)
  {
    if (count)
    {
      for (;;)
      {
        *byte_dest=*byte_src;
        if (!--count) break;
        ++byte_dest;
        ++byte_src;
      }
    }
  }
  return dest;
}
VS2005 такой код уже не заменяет на memcpy.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

FeyFre
Интересно как был Speech откомпилирован на x64. У меня

Code: Select all

Creating library Speech.lib and object Speech.exp
Speech.obj : error LNK2019: unresolved external symbol CLSID_SpObjectTokenCatego
ry referenced in function GetEnumerator
Speech.obj : error LNK2019: unresolved external symbol IID_ISpObjectTokenCategor
y referenced in function GetEnumerator
Speech.obj : error LNK2019: unresolved external symbol CLSID_SpVoice referenced
in function CreateSpeaker
Speech.obj : error LNK2019: unresolved external symbol IID_ISpVoice referenced i
n function CreateSpeaker
Speech.obj : error LNK2019: unresolved external symbol SPDFID_WaveFormatEx refer
enced in function Speak2File
Speech.obj : error LNK2019: unresolved external symbol CLSID_SpStream referenced
 in function Speak2File
Speech.obj : error LNK2019: unresolved external symbol IID_ISpStream referenced
in function Speak2File
Speech.dll : fatal error LNK1120: 7 unresolved externals
и microsoft говорит, что нужно использовать

Code: Select all

CLSIDFromProgID(pProgID, &clsid);
http://msdn.microsoft.com/en-us/library ... S.85).aspx

А Templates при компиляции для x64 все еще

Code: Select all

Microsoft (R) C/C++ Optimizing Compiler Version 14.00.40310.41 for AMD64
...
   Creating library Templates.lib and object Templates.exp
Templates.obj : error LNK2019: unresolved external symbol memcpy referenced in f
unction FillTreeCtrl
Templates.dll : fatal error LNK1120: 1 unresolved externals
. Ошибка исчезает после замены xmemcpy на код, который указан выше.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Instructor
Если склероз мне не изменяет, то мне тоже материлось так же. Решилось добавлением в список библиотек для компоновки sapi.lib(имя можно уточнить в файле vcproj с исходниками). И вопреки написанному в тексте по указанной ссылке 64-битная версия sapi.lib внезапно была обнаружена в 64-битном Windows SDK :) Так что плясок с бубном CLSIDFromProgID вовсе и не потребовалось.
А в моей компиляции на 64-битном работает? Просто интересно знать на сколько сильно в Редмонде опупели.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

FeyFre
Запускается, показывает "Microsoft Sam", но на машине не установлены аудио драйвера, поэтому не известно.

- При проигрывании в файл, что на 32, что на 64 битной версии "Stop" не убирается и звук не идет (если должен идти), хотя файл сохраняется.
- На 800x600 крестик закрытия панели чуть-чуть не вмещается.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Запускается, показывает "Microsoft Sam", но на машине не установлены аудио драйвера, поэтому не известно.
Хм, я как то не догадался протестировать на "глухой-немой" машине :) Попробуем.
Если будет желание потестировать ещё, то вот тут http://www.ntonyx.com/vac.htm есть виртуальный аудио терминатор.
- При проигрывании в файл, что на 32, что на 64 битной версии "Stop" не убирается и звук не идет (если должен идти), хотя файл сохраняется.
Без звуковой карточки?
- На 800x600 крестик закрытия панели чуть-чуть не вмещается.
Сдвигаю.

PS: Что-то на CVS версии 32-битная постройка(моя) при запуске выпадает(CRT-шной ошибкой).

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

FeyFre
Speech на x64 со звуком проверил - работает исправно.
Без звуковой карточки?
В любом случае.
PS: Что-то на CVS версии 32-битная постройка(моя) при запуске выпадает(CRT-шной ошибкой).
Поконкретнее - какая ошибка?
Post Reply