【发布时间】:2014-12-24 03:54:08
【问题描述】:
我正在与pocketsphinx 合作。它有 2 个 dll。 sphinxbase.dll 和 pocketsphinx.dll。 pocketsphinx.dll 调用 sphinxbase.dll 中的函数。我将在两者中调用函数。我想知道将两个源文件合并为一个 dll 的最简单方法。
我之前尝试过这个,但我遇到了使用 sphinxbase 的 pocketsphinx 问题,导致我尝试导出的导入函数出现警告/错误。
解决此问题的常见解决方案是什么? 我应该从 sphinbase 中删除 dllexport 标记,然后将这些函数包装在我导出的其他函数中吗?
例子
//inside sphinxbase
SPHINXBASE_DLL_EXPORT
void sphinxbasefunc();
//inside pocketsphinx
POCKETSPHINX_DLL_EXPORT
char* decode(ps_decoder_t decoder)
{
...
sphinxbasefunc();
...
}
然后我会删除 SPHINXBASE_DLL_EXPORT 宏并创建一个包装器,然后我会导出它。
//inside sphinxbase
void sphinxbasefunc();
WRAPPER_DLL_EXPORT
void sphinxbasefunc_wrapper() { sphinxbasefunc(); }
我认为这个解决方案对我来说是天真的。如果我走这条路,我需要包装几十个函数。
【问题讨论】:
-
我在 Unity 中工作,Unity 有一个错误,它只会加载单个 dll。常见的解决方法是将依赖 dll 放在单独的位置,但是您无法通过脚本访问依赖 dll。
-
啊,有道理。 (虽然是丑陋的错误。)感谢您的解释。 :-)
标签: c windows visual-studio dll