C# 非托管DLL适用于x86,但不适用于x64

C# 非托管DLL适用于x86,但不适用于x64,c#,python,dll,C#,Python,Dll,所以我遇到了这个问题 C# Python import ctypes a = ctypes.cdll.LoadLibrary('ClassLibrary1.dll') a.add(3, 5) 错误 AttributeError: function 'add' not found 我通过将构建目标定为x86而不是所提供的任何CPU解决了这个问题。然而,我不明白为什么当我的计算机/操作系统是64位时,它必须是x86 当它是64位dll时出错 WindowsError:[错误193]%1不是有效

所以我遇到了这个问题

C#

Python

import ctypes
a = ctypes.cdll.LoadLibrary('ClassLibrary1.dll')
a.add(3, 5)
错误

AttributeError: function 'add' not found
我通过将构建目标定为x86而不是所提供的任何CPU解决了这个问题。然而,我不明白为什么当我的计算机/操作系统是64位时,它必须是x86

当它是64位dll时出错

WindowsError:[错误193]%1不是有效的Win32应用程序

简单地说。当我以x86体系结构为目标并构建库时,它是有效的。但是,当我以x64体系结构为目标时。它抛出了一个windows错误


我的操作系统是64位的。Python 2.7.9 64位

从您的帖子中,不清楚您所谈论的是什么非托管DLL,以及DLL的实际位是什么。(链接帖子谈到从托管DLL导出方法,并说您需要两个单独的版本-在x86上,另一个x64)。您的python进程是否在相应的体系结构中运行?(换句话说,您是否正在尝试将64位dll加载到32位进程中?)否。首先,我从64位PC中的python外壳运行dll。首先,在桌面中运行python外壳之前,我构建了dll并将其复制到桌面。您是否希望本机32位python进程加载64位dll?我认为添加以下说明会很有用:OS 32/64位?EXE(我假设是phyton.EXE)32/64位?您的托管程序集是从C#文件x86/x64/anyCPU构建的吗?如果您有本机(非托管)程序集,那么它的位是多少x86/x64?我在程序中使用的所有代码都来自您的帖子,不清楚您所说的是什么非托管DLL以及DLL的实际位是多少。(链接帖子谈到从托管DLL导出方法,并说您需要两个单独的版本-在x86上,另一个x64)。您的python进程是否在相应的体系结构中运行?(换句话说,您是否正在尝试将64位dll加载到32位进程中?)否。首先,我从64位PC中的python外壳运行dll。首先,在桌面中运行python外壳之前,我构建了dll并将其复制到桌面。您是否希望本机32位python进程加载64位dll?我认为添加以下说明会很有用:OS 32/64位?EXE(我假设是phyton.EXE)32/64位?您的托管程序集是从C#文件x86/x64/anyCPU构建的吗?如果您有本机(非托管)程序集,它的比特数是多少x86/x64?我在程序中使用的所有代码都在这里
AttributeError: function 'add' not found