C#WCF Web服务到C ++ DLL调用

问题描述 投票:1回答:1

有一个C ++遗留DLL,它是在Visual Studio 2015中构建的,我正在努力将一些C ++函数公开为REST API。为此,在同一解决方案中创建了一个WCF Web服务项目,并尝试通过DllImport调用C ++函数。

[DllImport("ExtOutPutGenerator.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern int CreateFrameGenerators(string node, string axis);

在C ++代码中,上面的函数声明为,

extern "C" __declspec(dllexport) int CreateFrameGenerators(const char* node, const char* axis);

现在,当我通过DllImport调用C ++函数时,它无效。

也就是说,当我通过浏览器调用REST API时,它会给出以下消息。

The server encountered an error processing the request. See server logs for details.

我确信在从C#内部调用C ++函数时会发生故障。不确定在哪里可以找到服务器日志。

出于测试目的,我在同一个解决方案中创建了一个示例C ++测试DLL,然后通过DllImport调用它的功能,并且工作正常。

所以问题似乎与传统的C ++ DLL有关。

我不知道还有什么要查找或如何排除故障。

所以我的问题是,

  1. 遗留的C ++ DLL导致此问题的问题是什么?任何特定的项目设置?
  2. 是否有另一种方法可以在不使用DllImport的情况下实现这一目标?更简单,更清洁,可能适用于所有C ++项目?
c# wcf visual-c++ dllimport
1个回答
1
投票

假设你所有的编码部分都是正确的,另一个要检查的重要事情是目标平台。 C ++和C#都需要为同一平台构建。

例如,如果C ++ DLL设置为x64,那么C#也应该用x64构建。

© www.soinside.com 2019 - 2024. All rights reserved.