“程序入口点...无法找到”错误的DLL中

时间:2015-07-14 20:00:19

标签: c++ haskell dll

我已经从Haskell代码创建了一个DLL,我从C ++调用这个DLL。当我在Visual Studio 2010中以调试模式运行它时,我的应用程序工作正常,但是当我进行发布版本并安装它时,我收到错误

  

程序入口点LVSpecData_GetGlob无法位于动态链接库SpectrumMath.dll中。

SpectrumMath.dll是我的基于Haskell的DLL。奇怪的是,函数LVSpecData_GetGlob不在那个DLL中 - 它在我链接的另一个DLL中,并且当我添加Haskell DLL时, DLL或我的应用程序对它的使用没有任何改变。< / p>

这个错误消息似乎在说Windows混淆了哪些函数存在于哪些DLL中。这里可能出现什么问题?

2 个答案:

答案 0 :(得分:7)

这看起来是Visual Studio 2010 Release模式中的一个错误(Haskell dll函数不是由在Release模式下构建的exe引入的,因此Haskell dll未加载,在Debug导入中存在并且它工作正常)。

使用Visual Studio 2013 Update 4和Visual Studio 2015 RC在发布模式下构建的相同exe项目工作正常。

答案 1 :(得分:2)

您是否尝试过使用.def文件来定义导出? https://msdn.microsoft.com/en-us/library/d91k01sh.aspx

创建后,您必须编辑项目属性链接器 - >输入 - >模块定义文件