Мне приходилось писать что-то подобное. Мой совет: писать на С а не на С++, так как таблица экспорта функции в С++ из-за возможности перегрузки функций выглядит очень некрасиво. В крайнем случае могу посоветовать прописывать таблицу экспорта вручную. С компилятором Intel не встречался, но с Dll-ки, написанный в Visual C++ без проблем подцепляются к проектам на том же C# через PInvoke (как x32 так и x64). В качестве средства многопоточного программирования в .NET лучше использовать ParallelFX, разица в производительности ParallelFX и OpenMP в Visual C++ малозначительна, а иногда ParallelFX даже быстрее.
Хы, что за чертовщина: создал свежий проект, сохранил, побилдил — легло в папку Debug под проектом, как и надо. Закрыл, открыл заново, побилдил — легло в корень Solution. Чудеса!
Ага… в connect.microsoft.com… чтобы к выходу vs2010 это прочитали. Это как с поддержкой x64 solution config — то она есть, то ее нету, короче магия какая-то ;)
Еще забыл добавить, что если используешь компилятор C++ от MS, то отладка солюшена в котором есть проект на native C++ и проект на .net проходит без проблем, можно ставить брейкпоинты и там и там.
Сейчас попробовал создать подобный миксованный проект для x64, баги подтверждаю. Видимо тогда и в самом деле x32 только собирал. Сейчас при импорте из нативной dll вылетает BadImageFormatException.
разница в производительности ParallelFX и OpenMP в Visual C++ малозначительна
Пробовал. Для сильнопараллелизуемых приложений, С++/OpenMP быстрее на порядок (т.е. где-то в 10 раз), а с грамотным использованием SIMD можно и того больше выжать. ParallelFX, даже когда весь код написан с указателями (т.е. он unsafe) все равно тормозит так, что волей-неволей начинаешь смотреть на С++.
Видимо у вас очень специфическая задача, может её лучше c помощью GPGPU решать. В .NET SIMD тоже можно впарить, если очень хочется. Вот к примеру с помощью этого NetASM.
В создании 64-битных приложений я не силен, но хотелось бы узнать: портировать, скажем, aimp на 64-бита кто-нибудь мог бы взяться? :) Там по моему, какая-то беда с контестным меню.
Артем Измайлов, в моей с ним переписке, сказал что для этого нужен Embarcadero. Вот я хз, может кто-нибудь осилит?
Вопросы из зала:
1) А есть необходимость? Ну да, какие-нибудь операции декодирования будут чуть быстрее, но так ли это важно? Фубар вон, при всей своей 32-битности, никаких проблем на х64 не испытывает.
2) Неужели Дельфи дожил-таки до 64-битного компилера? Иначе это будет не портирование, а переписывание с нуля.
P/Invoke и 64-битная разработка