2011-11-07 40 views
0

我在Qt中创建了一个名为test的函数。我创建了另一个Qt项目,我可以在没有任何问题的情况下使用DLL。我现在想在C#应用程序中使用此DLL,但是,我在调用该函数时遇到问题。我已将该DLL放在与我的C#exe相同的文件夹中。我导入像这样如何将我在Qt中创建的DLL导入到C#应用程序中

[DllImport("TestDll.dll", CharSet = CharSet.Ansi, SetLastError = true)] 
private static extern bool test(); 

我收到以下异常的函数: EntryPointNotFoundException

我尝试添加EntryPoint = test我的DllImport但仍然收到相同的异常

我在做什么错?

+1

您确定测试方法是从DLL中导出的吗?下载Dependency Walker并查看它是否在出口中列出。 http://www.dependencywalker.com/ – shf301

+0

不需要字符集,因为没有文本和SetLastError = true是错误的,这是为了赢得apis。很有可能你的DLL名称已经损坏。使用.def文件导出它以避免损坏。确保你使用extern“C”。也可以调用约定来匹配。 C++代码将使用cdecl,您的C#默认为stdcall。 –

+0

我有一种感觉,它可能有一些事情,我没有静态构建的QT安装..不知道,但 – poco

回答

0

您是否尝试在CharSet中更改选项?我一直处于类似的情况。但那时,我正在使用在Fortran中编译的第三方DLL。说可能是从Ansi到Unicode的尝试。

HTH

+0

是的先生,我试过Unicode,但仍产生相同的异常 – poco

+0

CharSet无关,因为没有文本参数在这里 –

相关问题