Ага, printf вызови! Да и не просто всё, вопросы сходу: 1) если код кросплатформенный, то как быть с тем, что где-то нужны .dll, где-то .dynlib, где-то .so, а имя библиотеки захардкожено и используется, в момент компиляции (я уже знаю как выкрутиться и захардкодить только libdl.so или user32.dll, чтоб потом вызывать dlopen() и dlsym()/GetProcAddress() -- костылище)...
2) должен для каждой функции писать правило маршалинга, если функций много это нереально объёмная работа (в том же SWIG всё проще делается);
3) в C# нет функций с переменным числом аргументов (есть params array[], но он же в куче аллоцируется, есть недошаблоны (где нет переменного числа параметров тоже), и недо-tuple (который не умеет хранить ни ноль, ни более 8-и элементов) но там же происходит boxing и, видимо аллокация, для кажого объекта;
4) непонятно как в compile-time захардкодить нужную библиотеку в зависимости от платформы (особенно при кросс-компиляции);
5) 2-х байтные chars в строках -- это значит на каждый чих их переводить в ascii/utf-8/cp1251 и обратно и опять же аллоцировать память, сделали хотя бы совместимость с wchar_t, чтоб можно было wsnprintf() вызвать...
6) в нормальных языках по 100500 разным причинам есть аналог printf, только у микрософта нет.
[ZX]