Одна опция состоит в том, чтобы переместить импорт в отдельный DLL и предоставить классы обертки им использующий непрозрачный указатель. Тогда отключите / MP для того DLL только, и остальная часть Вашей сборки должна быть прекрасной.
Что ж, в документации для BinaryReader.Read7BitEncodedInt уже сказано, что он ожидает, что значение будет записано с помощью BinaryWriter.Write7BitEncodedInt и детали документации этого метода формат:
Целое число параметра значения записывается по семь бит за раз, начиная с семи младших битов. Старший бит байта указывает, есть ли еще байты, которые нужно записать после этого.
Если значение умещается в семи битах, он занимает только один байт пространства. Если значение не умещается в семи битах, старший бит устанавливается на первый байт и записывается. Затем значение сдвигается на семь битов и записывается следующий байт. Этот процесс повторяется до тех пор, пока не будет записано все целое число.
Итак, целое число 1259551277, в двоичном формате 1001011000100110011101000101101 будет преобразован в этот 7-битный формат следующим образом:
Remaining integer encoded bytes
1001011000100110011101000101101
100101100010011001110100 00101101
10010110001001100 10101101 01110100
1001011000 10101101 11110100 01001100
100 10101101 11110100 11001100 01011000
0 10101101 11110100 11001100 11011000 00000100
Я не настолько уверен в своих навыках C прямо сейчас, чтобы обеспечить рабочую реализацию. Но, судя по этому описанию, сделать это не так уж сложно.
Метод Write7BitEncodedInt содержит описание: 7 младших битов каждого байта кодируют следующие 7 бит числа. Старший бит устанавливается, когда идет следующий байт.
Формат описан здесь: http://msdn.microsoft.com/en-us/library/system.io.binarywriter.write7bitencodedint.aspx