با سلام
در نسخه Delphi XE2 شما این امکان رو دارید که میتوانید توابع مورد نیاز خود را در visual stodio نوشته و کامپایل کنید سپس فایلهای ابجکت ایجاد شده توسط کامپایلر مایکروسافت به دلفی منتقل و از ان توابع به راحتی در برنامه استفاده کنید رو با استفاده از لینکر دلفی به فایل exe تبدیل کنید
برای این کار ابتدا Vs2010 را باز کنید از منو گزینه new project مربوط به visual C++ را انتخاب کنید در صفحه بعدی شما میتوانید حالتهای مختلفی را انتخاب کنید مانند empty Project که میتوانید به جای ان گزینه های زیر را انتخاب کنید
Win32 Console Application یا Win32 Project از قسمت Win32 Project انتخاب کنید سپس یک C++ File و Header File از منوی Project اضافه کنید حالا این 2 فایل به پروزه اضافه میشود حالا در Solution Explorer روی C++ File راست کلیک کرده Properties را انتخاب کنید حالا در پنجره جدید c/c++ و از زیر منو های باز شده گزینه Advanced را اتخاب کنید حالا مقدار compile as را روی Compile As C Code(/TC) قرار دهید و Precompiled headers را انتخاب و PreCompile Header را روی Not Using PreCompiled Header قرار دهید حالا در General قسمت را Use Unicode را Yes تنظیم کنید سپس در قسمت Code Genration مقادیر زیر را تنظیم کنید
Enable C++ Exceptions="No"
Buffer Security Check = "No"
و از قسمت Optimization مقدار Optimization را برابر "No" تنظیم کنید حالا کدها و توابع خود را بنویسید و موقع کامپایل روی فایل مورد نظر راست کلیک کرده و کامپایل را انتخاب کنید 32 بیت یا 64 بیت تفاوتی ندارد با این کار فایلهای .obj تولید خواهد شد حالا این فایلهای .obj را میتوانید به پوشه پروجکت دلفی منتقل کنید
در حالت 32 بیت
لینکر دلفی اطلاعاتی در مورد پارامترهای استفاده شده در توابع c++ ایجاد شده در vs ندارد به همین دلیل شما باید 1 بار ان توابع را در یک یونیت 2 باره تعریف کنید توجه داشته باشید که اعلان توابع را cdecl و external انتخاب کنید زیرا ارسال پارامترها در دلفی راست به چپ و درc++ از چپ به راست میباشد توجه داشته باشید اگر از توابع api یا c++ runtime استفاده کردید باید انها را نیز در یونیت مورد نظر اعلان کنید با همان اعلان cdecl
در حالت 64 بیت
استفاده از فایلهای .obj 64 بیتی راحتر از 32 بیتی میباشد زیرا فقط اعلان fastcall دارند
منبع:
کد:
http://www.atelierweb.com/articles/linkCtoDElphi.htm
پروژه مثال
کد:
http://www.atelierweb.com/articles/VSandDelphi.zip