Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# x64 C++;从x64托管代码调用DLL 我有一个X64位托管项目,它调用了x64位C++ DLL。这在VisualStudio2010中运行良好。但是,如果我把C++项目升级到Visual Studio 2012,我就不能再调用x64位DLL了,而且我得到了错误_C#_C++_64 Bit_Dllimport - Fatal编程技术网

C# x64 C++;从x64托管代码调用DLL 我有一个X64位托管项目,它调用了x64位C++ DLL。这在VisualStudio2010中运行良好。但是,如果我把C++项目升级到Visual Studio 2012,我就不能再调用x64位DLL了,而且我得到了错误

C# x64 C++;从x64托管代码调用DLL 我有一个X64位托管项目,它调用了x64位C++ DLL。这在VisualStudio2010中运行良好。但是,如果我把C++项目升级到Visual Studio 2012,我就不能再调用x64位DLL了,而且我得到了错误,c#,c++,64-bit,dllimport,C#,C++,64 Bit,Dllimport,试图加载格式不正确的程序。(HRESULT的异常:0x8007000B) 这个项目在VisualStudio2010中非常有效。如果我不允许VisualStudio将项目升级到VisualStudio 2012,并在VisualStudio 2010中编译和链接C++ DLL,则比所有的作品都伟大。 我的问题是什么改变了这个密码。我假设某个常规类型已更改,这将需要对我的部分进行更改。第一个中断的函数签名是: C夏普中的签名为: internal static extern int Reverse

试图加载格式不正确的程序。(HRESULT的异常:0x8007000B)

这个项目在VisualStudio2010中非常有效。如果我不允许VisualStudio将项目升级到VisualStudio 2012,并在VisualStudio 2010中编译和链接C++ DLL,则比所有的作品都伟大。 我的问题是什么改变了这个密码。我假设某个常规类型已更改,这将需要对我的部分进行更改。第一个中断的函数签名是:

C夏普中的签名为:

internal static extern int ReverseBottomToTop(IntPtr imgptr, int nrows, int ncols)

C++中的签名是:

int ReverseBottomToTop(unsigned char *imgptr, int nrows, int ncols)

您可能需要再次检查项目设置。在C#项目中,实际上有三个相关的位置需要查看(解决方案配置、解决方案配置到项目配置的映射以及项目配置的实际含义,如“平台目标”下“构建”部分的项目属性页所定义)。通常,您得到的错误是正确的,因为它表明所涉及的二进制文件之间存在平台不匹配

您可能希望运行corflags.exe以查看.Net二进制文件是否真的是x64/AnyCPU版本。在C++ DLL上,依赖性沃克可以告诉你DLL的架构是什么。

可能的副本可能看起来不是一个精确的副本,但是答案是:你在某种程度上混合了PalpStCARSY项目有一种新的方法来设置VS2012中的平台目标。它在以前的版本中不存在,所以它设置错误的可能性很大,特别是因为默认设置是错误的。右键单击C#EXE项目的“属性”、“生成”选项卡。取消选中“首选32位”选项。