我似乎无法让Ctypes找到在DLL文件中声明的c++函数。

下面的附件可能比我自己的描述更有帮助。
CTypes_1是从DLL调用函数的Python代码的图片。
CTypes_2是包含在DLL中的代码。(当然是在编译之前。实际的DLL与下面的完全不同。)
CTypes_3是位于我在导入期间从中调用它的目录中的DLL。它被清楚地标记为DLL,所以我没有尝试使用错误的文件类型(无论如何都会抛出一个错误)。
CTypes_4是来自python的实际错误输出。
我想我一直在使用较旧的教程,但我认为我看到人们实现的四种左右的加载文件的方法并没有真正改变太多,所以它一定是我遗漏了什么。我是否错误地在DLL中创建了函数?我是不是搞砸了python代码中的导入?我看不出有什么问题。先谢谢你。
附加图像
File Type: jpg
CTypes_1.jpg
(17.9KB,354次浏览)
File Type: jpg
CTypes_2.jpg
(27.6KB,502浏览量)
File Type: jpg
CTypes_3.jpg
(13.5KB,250次浏览)
File Type: png
CTypes_4.PNG
(12.3KB,429次浏览)

# 回答1


至于我对函数名称的选择……管好你的事吧。:p
(O_O)
# 回答2


好的……好的……大家冷静下来。我很感激我得到的大量帮助,但我自己找到了答案:
Http://wolfprojects.altervista.org/dllforpyinc.php
显然,您需要向CPP代码添加一条指令,然后设置函数以将其作为DLL资产导出。我刚刚找到了这个解决方案,所以我不确定是什么让它运行(我对c++不是很熟悉),但我会读一些它,让你知道我发现了什么……如果我理解它的话……:p
我没有看到任何其他在创建DLL时必须跳过这个圈子的例子(如果他们这样做了,他们省略了一些步骤:/),但它现在可以工作了。
将以下代码添加到C++版本DLL(直接的"C"代码不同),使整个代码正常工作:

选择 | 换行 | 行号
  1. // ConsApp.cpp : Defines the exported functions for the DLL application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #define DLLEXPORT extern "C" __declspec(dllexport)
  6.  
  7. DLLEXPORT int otters(int a, int b) {
  8.     return a + b;
  9. }
  10.  
  11. DLLEXPORT int ducks(int a, int b){
  12.     return(a-b);
  13. }

标签: python

添加新评论