none
xmmintrin.h и компиляция в /clr:pure RRS feed

  • Вопрос

  • Здравствуйте. Необходимо написать программу с использованием SSE. Для этого использовал xmmintrin.h в Visual Studio, но когда начал компилировать,то появилась ошибка  fatal error C1189: #error :  ERROR: XMM intrinsics not supported in the pure mode!. Поменял /clr:pure на /clr, ошибка исчезла и смог отладить код. Но,кажется,все стало работать медленнее. Очень бы хотелось каким-нибудь образом использовать XMM в pure режиме. Подскажите пожалуйста,как это можно сделать и можно ли вообще.

Ответы

  • Со ссылки:

    >Функции в неуправляемом файле заголовка должны быть явно обозначены как __cdecl, или же весь исходный код библиотеки DLL должен быть перекомпилирован с /clr:pure.

    Второе у Вас не работает. Попробуйте пометить Ваши неуправляемые методы __cdecl опцией.  

     

    >Использование более сложных неуправляемых API, вероятно, потребует предоставления неуправляемой функциональности в виде COM-интерфейса или смешенной сборки, которая может служить как интерфейс между чистым MSIL и неуправляемыми компонентами.

    На мой взгляд правильнее будет сделать COM-объект и обращаться к нему из чистой управляемой сборки. Смешанная сборка у Вас тормозит.


    [My blog] [My E-mail]

    • Помечено в качестве ответа Abolmasov Dmitry 16 мая 2011 г. 13:02

Все ответы

  • Вы используете платформу .NET в своем приложении?
    [My blog] [My E-mail]
  • Да. Проект Visual C++ Windows Forms Application. И к нему подключаю модуль с классом, методы которого реализованы стандартными операциями С++ и SSE. В общем, в этом модуле, кроме операций *, / , + , - , перехода по указателю, операции new и вызовов функций из xmmintrin.h больше ничего нет.
  • К сожалению нельзя использовать эти инструкции в pure режиме. Вариант один - использовать просто /clr.


    Для связи [mail]
  • Но когда я искал в библиотеке MSDN, как устранить эту ошибку, то наткнулся на статью http://msdn.microsoft.com/ru-ru/library/ms173253(v=VS.100).aspx . Как я понял,существует возможность экспортировать dll файл с функциями и использовать его в pure mode. Но к сожалению я не силен в платформе .Net и у меня ничего не получилось. Или я не правильно понял содержание статьи?
  • Со ссылки:

    >Функции в неуправляемом файле заголовка должны быть явно обозначены как __cdecl, или же весь исходный код библиотеки DLL должен быть перекомпилирован с /clr:pure.

    Второе у Вас не работает. Попробуйте пометить Ваши неуправляемые методы __cdecl опцией.  

     

    >Использование более сложных неуправляемых API, вероятно, потребует предоставления неуправляемой функциональности в виде COM-интерфейса или смешенной сборки, которая может служить как интерфейс между чистым MSIL и неуправляемыми компонентами.

    На мой взгляд правильнее будет сделать COM-объект и обращаться к нему из чистой управляемой сборки. Смешанная сборка у Вас тормозит.


    [My blog] [My E-mail]

    • Помечено в качестве ответа Abolmasov Dmitry 16 мая 2011 г. 13:02