मैंने सी # में एक डीएलएल बनाया है। अब मैं उस डीएलएल में कार्यों को कॉल करने के लिए R Environment का उपयोग करना चाहता हूं। आर पर्यावरण अप्रबंधित सी/सी ++ डीएलएल को कॉल करने का समर्थन करता है लेकिन .NET DLL में नहीं। तो मेरा सवाल यह है कि, क्या मैं सी/सी ++ डीएलएल से सी # डीएलएल में फ़ंक्शन कॉल कर सकता हूं? यदि हां, तो क्या आपके पास यह करने के बारे में जानकारी का एक लिंक है?क्या आप सी डी डीएल से सी # डीएलएल कॉल कर सकते हैं?
उत्तर
ऐसा करने का सबसे आसान तरीका यह है कि आपके सी # डीएलएल में सी # कक्षाओं में से एक को COM ऑब्जेक्ट के रूप में बेनकाब करना है, और उसके बाद अपने सी/सी ++ डीएलएल से इसका एक उदाहरण बनाएं। यदि यह स्वीकार्य विकल्प नहीं है, तो आपको एक मिश्रित-मोड C++ DLL बनाना होगा (जिसमें प्रबंधित और अप्रबंधित कोड दोनों शामिल हैं)। आपका सी/सी ++ डीएलएल आपके मिश्रित मोड डीएलएल में निर्यात किए गए कार्यों को कॉल कर सकता है, जो आपके सी # कक्षा में कॉल को आगे बढ़ा सकता है।
यह लेख आपको बाहर मदद कर सकता है:
अपडेट किया गया: एक उपकरण mergebin कहा जाता है कि साथ जहाजों .NET SQLite wrapper आप एक मिश्रित मोड देशी/प्रबंधित DLL बनाने के लिए उपयोग कर सकते हैं। से स्रोत कोड ले लो:
SQLite for ADO.NET 2.0 (SourceForge)
आप bin\tools
फ़ोल्डर में exe मिल जाएगा।
केवी
लिंक केवी के लिए धन्यवाद - दिलचस्प पढ़ने। – Guy
यह वास्तव में बहुत आसान है। अपने .Net प्रोजेक्ट में "UnmanagedExports" पैकेज जोड़ने के लिए बस NuGet का उपयोग करें। विवरण के लिए https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports देखें।
आप फिर COM परत करने के बिना सीधे निर्यात कर सकते हैं। यहां नमूना सी # कोड है:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using RGiesecke.DllExport;
class Test
{
[DllExport("add", CallingConvention = CallingConvention.Cdecl)]
public static int TestExport(int left, int right)
{
return left + right;
}
}
आर नियमित सी डीएल की तरह TextExport लोड करने में सक्षम होना चाहिए।
- 1. जा सकते हैं कोड विंडोज़ में डीएल उत्पन्न कर सकते हैं या सी ++/सी # कॉल गोलांग कोड कर सकते हैं?
- 2. क्या आप जावास्क्रिप्ट से सी # फ़ंक्शन कॉल कर सकते हैं?
- 3. आप सी ++ से प्रबंधित (सी #) फ़ंक्शन कैसे कॉल करते हैं?
- 4. सी में आप क्या नहीं कर सकते हैं जिसे आप उद्देश्य-सी में कर सकते हैं?
- 5. क्या lineno खुद को कॉल कर सकते हैं? (सी/सी ++)
- 6. सी ++ जावा कोड कॉल कर सकते हैं?
- 7. सी ++ डीएल से सी # पी/
- 8. डी भाषा से सी ++ (सी) कॉल करें
- 9. सी # से सी डीएलएल
- 10. सी # डीएलएल
- 11. देशी डीएल से सी # अनुप्रयोग
- 12. सी ++ डीएलएल
- 13. क्या आप कोको (ओब्जे-सी) परियोजना में सी ++ पुस्तकालयों का उपयोग कर सकते हैं?
- 14. सी # परियोजना से सी ++ डीएल डीबग कैसे करें?
- 15. डीएल कॉल
- 16. डेल्फी डीएल से सी # ऐप
- 17. सी # परियोजना से डीएलएल बनाना?
- 18. संदर्भ द्वारा स्कैला कॉल कर सकते हैं?
- 19. हम एक बहुप्रचारित सी # विंडोज सेवा अनुप्रयोग से बुलाए गए वीबी 6 डीएल के साथ कैसे काम कर सकते हैं?
- 20. डीएलएल से कॉल फ़ंक्शन?
- 21. सी ++: डीएल अनलोडिंग समस्या
- 22. सी # में आप कैसे नींबू (nybble) बाइट्स कर सकते हैं?
- 23. सी ++ डीएल या सी ++ exe
- 24. सी # में आप कितने वर्ग प्राप्त कर सकते हैं?
- 25. क्या आप सी/सी ++ प्रक्रिया को फ्रीज कर सकते हैं और इसे एक अलग मेजबान पर जारी रख सकते हैं?
- 26. सी # परियोजना में सी ++ डीएलएल का उपयोग
- 27. सी ++ एक डीएलएल hooking?
- 28. रिवर्स इंजीनियर सी ++ डीएलएल
- 29. क्या आप निम्नलिखित सी/सी ++ कथन की व्याख्या कर सकते हैं?
- 30. आप सी कोड से पायथन कोड कैसे कॉल करते हैं?
वह मिश्रित मोड सी ++ डीएलएल लगता है जैसे यह चाल करेगा - मैंने बस वीएस -2008 का उपयोग करके मिश्रित मोड डीएलएल प्रोजेक्ट बनाने के लिए उपलब्ध टेम्पलेट्स पर एक नज़र डाली है लेकिन एक को नहीं देखते हैं। मिश्रित मोड डीएलएल शुरू करने के बारे में आप कैसे जाएंगे? – Guy
यदि आप एक नई सी ++ कक्षा पुस्तकालय बनाते हैं, जो एक सी ++ .NET DLL प्रोजेक्ट बनाता है। जब तक "सामान्य भाषा रनटाइम समर्थन" सेटिंग "सामान्य भाषा रनटाइम समर्थन (/ clr)" पर सेट की जाती है, तो आप प्रोजेक्ट में प्रबंधित और अप्रबंधित कोड दोनों का उपयोग करने के लिए स्वतंत्र हैं। – Andy