سلام
یک کد ++C دارم که مربوط به پیاده سازی یک الگوریتم هستش ...

یکسری از نقاط برنامه خطاهایی مثل Divide by zero و Index out of band داره و ممکنه باعث تولید Exception بشه ...

تا وقتی که این کد بصورت یه برنامه Console در VS اجرا میشه مشکلی نیست و از روی خطاها عبور می کنه و الگوریتم رو هرچند غلط به پایان می رسونه. این ممکنه به خاطر غیرفعال بودن Exception ها باشه!

وقتی همین کد برای استفاده در زبانهای دیگر با استفاده از یک پروژه MFC Library به یک dll.* تبدیل میشه؛ باز مشکلی نیست و حداقل تو Delphi و Java الگوریتم بدون خطا اجرا می شه ...

اما تو نسخه 64 بیتی dll.* موضوع فرق می کنه و همون نقطه های Exception باعث بروز خطا و ناتمام ماندن برنامه میشه!!!
جالبه که در حالت اجرای کنسولی (بدون dll.*) در حالت 64 بیتی Exception تولید نمیشه!

فکر کنم باید یه جوری Exception Mask در داخل dll.* انجام بشه، چون در حالت Console ای فعال/غیر فعال کردن Exception ها داخل Visual Studio انجام میشه، اما تو حالت فراخوانی تو محیطهای دیگه، خبری از VS نیست.

مشابه این قضیه رو یک باره دیگه تو ساخت dll.* تو Delphi دیده بودم که مشکل با فراخوانی تابع SetExcepionMask و Mask کردن چند تا Exception برطرف شده بود. البته تو اون قضیه نسخه 64 بیتی بدون مشکل اجرا می شد اما نسخه so.* تهیه شده برای استفاده در لینوکس، Exception هایی ایجاد می کرد که با Mask کردن اونها در سمت so.* مشکل برطرف شد.

ضمنا ممکنه بگید که خوب خطاهایی که باعث Exception میشه رو اصلاح کنم! اما حجم کد خیلی زیاده و نیاز به بررسی زیادی داره و در واقع فعلا می خوام نسخه 64 بیتی مثل نسخه 32 بیتی حداقل بدون خطا اجرا بشه.

با تشکر