我已经从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中。这里可能出现什么问题?
答案 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
创建后,您必须编辑项目属性链接器 - >输入 - >模块定义文件