Почему вы используете Visual C ++, работающий на .Net? Я бы порекомендовал вам либо перейти на Native C ++, либо использовать лучший язык .NET, такой как C #. Честно говоря, я не уверен, что Mono может справиться с управляемым C ++.
Если вы переключаетесь на собственный C ++, то обязательно абстрагируйте биты, специфичные для платформы. Также убедитесь, что ваше приложение будет работать как на 32, так и на 64 бит. Используйте независимые от платформы API, такие как GTK или WxWidgets.
Если вы переключитесь на C #, прочитайте, какие API-интерфейсы Mono не поддерживает (и никогда не будет) поддерживать. Не используйте небезопасный код или P / Invokes.
И независимо от того, какой путь вы выберете, Всегда регулярно тестируйте вашу программу на Windows и Linux. Если он работает в Linux, он обычно работает и в Mac, но я бы тестировал на всех трех, по крайней мере, один раз в день