Python中文
首页
教程
问答
标签
搜索
登录
注册
将带有非托管导出的C#DLL加载到Python中
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我使用NuGet包<a href="https://www.nuget.org/packages/UnmanagedExports">UnmanagedExports</a>构建了一个C#DLL(MyTestDll):</p> <pre><code>[DllExport("Test", CallingConvention = CallingConvention.Cdecl)] public static string Test(string name) { return "hi " + name + "!"; } </code></pre> <p>我通过ctypes DLL导入从Python中使用它:</p> ^{pr2}$ <p>这只是一个幻想,很管用。在</p> <p>然后,我又添加了一个DLL(NoSenseDll):</p> <pre><code>namespace NoSenseDll { public class NoSenseClass { public static int Sum(int a, int b) { return a + b; } } } </code></pre> <p>我开始使用这个NoSenseDll来实现MyTestDll:</p> <pre><code>[DllExport("Test", CallingConvention = CallingConvention.Cdecl)] public static string Test(string name) { return NoSenseDll.NoSenseClass.Sum(4, 5).ToString(); } </code></pre> <p>不幸的是,它不起作用。Python说:</p> <pre class="lang-none prettyprint-override"><code>WindowsError: [Error -532462766] Windows Error 0xE043435 </code></pre> <p>我曾试图将<code>C:\\Temp\\Test</code>添加到path,但这没用。在</p> <hr/> <P>我写过C++测试:</p> <pre><code>#include "stdafx.h" #include "windows.h" #include <iostream> #include <string> #include "WinBase.h" typedef char*(__stdcall *f_funci)(const char*); int _tmain(int argc, _TCHAR* argv[]) { int t; std::string s = "C:\\Temp\\Test\\MyTestDll.dll"; HINSTANCE hGetProcIDDLL = LoadLibrary(std::wstring(s.begin(), s.end()).c_str()); f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "Test"); std::cout << "funci() returned " << funci(std::string("qqq").c_str()) << std::endl; std::cin >> t; return EXIT_SUCCESS; } </code></pre> <P>如果第二个DLL(NoSeNSEDL)与C++可执行文件处于相同的文件夹中,则可以工作。如果我只是将NoSenseDll文件夹添加到PATH中,它就不起作用了。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>你也可以退房科斯图拉。福迪. 在</p> <p>这是一个构建任务,它将把依赖项作为资源添加到程序集中,甚至挂接模块初始值设定项以在运行时加载它们。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
8 回答
如何添加表示整数的擦边字符串?
10 回答
如何添加要在Bokeh中使用的新font.ttf文件?
10 回答
如何添加要显示的矩阵XY轴编号和XY轴
2 回答
如何添加计数?
9 回答
如何添加计数器函数?
7 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
1 回答
如何添加计数器来跟踪while循环中的月份和年份?
6 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
1 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
9 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
8 回答
如何添加评论拉梅尔亚姆
3 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
1 回答
如何添加谷歌地点自动完成到Flask?
9 回答
如何添加超时、python discord bot
3 回答
如何添加超过1dp的检查
2 回答
如何添加距离方法
6 回答
如何添加跟随游戏的敌人精灵
9 回答
如何添加路径以便python可以找到程序?
3 回答
如何添加身份验证/安全性以使用happybase访问HBase?
4 回答