我目前正在尝试使用第三方提供的 FORTRAN DLL。现在,它已经被其他供应商使用过(不确定他们是否使用 C# 来使用它),但是当我尝试使用它时,我遇到了一些参考错误。
我基本上是想让它在一个小型测试应用程序中工作。
这是我用来导入的 C# 代码(实际上是基本的 COM):
[DllImport("foo.dll")]
public static extern void foo(ref int IS, ref double[] BETA, ref int K, out double TH, out double SETH, out int IER);
static void Main(string[] args)
{
double[] betas = new double[3];
betas[0] = 25.6;
betas[1] = 30.8;
betas[2] = 35.8;
int score = 5;
int numberOfItems = 3;
double latentVariable;
double standardErrorOfEstimate;
int errorCode;
foo(ref score, ref betas, ref numberOfItems, out latentVariable, out standardErrorOfEstimate, out errorCode);
Console.ReadLine();
}
注意:DLL 方法签名与我所拥有的匹配。
尝试运行应用程序时,出现以下异常:
无法加载 DLL 'foo.dll':应用程序无法启动,因为它的并排配置不正确。请查看应用程序事件日志或使用命令行 sxstrace.exe 工具了解更多详细信息。(来自 HRESULT 的异常:0x800736B1)
查看事件日志,错误中显示了以下详细信息:
“C:\dllpath\foo.dll”的激活上下文生成失败。相关程序集 Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" 找不到。请使用 sxstrace.exe 进行详细诊断。
此外,运行 sxstrace,显示相同的信息和错误:
错误:无法解析引用 Microsoft.VC90.DebugCRT、processorArchitecture="x86"、publicKeyToken="1fc8b3b9a1e18e3b"、type="win32"、version="9.0.21022.8"。错误:激活上下文生成失败。结束激活上下文生成。
现在,在做了一些谷歌搜索和环顾这里之后,有些人建议安装 C++ 的可再发行包。我在 2008 年和 2010 年都在 x86 和 x64 平台上做到了这一点,但仍然没有乐趣。
有人有什么想法吗?我正在使用 Visual Studio 2010 和 Windows 7(如果有帮助?)。