0

我正在开发一个项目,以将 freeswitch 用作嵌入到另一个应用程序中。我正在开发一个 C#/.Net 应用程序。

我尝试了一些非常简单的方法,即在一个简单的测试项目的主要功能中初始化核心。我在项目中添加了 freeswitch.managed.dll 引用,我只输入了这 3 个命令,如 freeswitch wiki 中所示,

String err = "";
const uint flags = (uint)(switch_core_flag_enum_t.SCF_USE_SQL | switch_core_flag_enum_t.SCF_USE_AUTO_NAT);
freeswitch.switch_core_set_globals();
freeswitch.switch_core_init(flags, switch_bool_t.SWITCH_FALSE, ref err);    
freeswitch.switch_core_init_and_modload(flags, switch_bool_t.SWITCH_FALSE, ref err);      

前后是“欢迎”和“核心启动”控制台消息。现在,当我尝试构建整个东西时,它只是崩溃了。看来 switch_core_set_globals 函数工作正常。但另外两个是行不通的。

“未处理的系统。AccessViolationException 尝试读取或写入受保护的内存”

这让我感到奇怪,因为我能够成功构建一个项目,FSClient 是一个使用嵌入式 freeswitch 的软电话。没有崩溃,什么都没有。

因此,我想知道是否需要进行特定配置或任何其他设置操作才能正确启动 fs 内核;

4

1 回答 1

0

大家好,我想我终于想通了!事实证明这是一个配置/平台问题。我试图在 x64 平台上运行该项目。我试图在 x86 CPU 上运行一个类似的项目并且它工作正常。所以回到我自己的电脑上,我创建了一个新的简单控制台应用程序,添加了 freeswitch.managed dll 并将目标平台更改为 x86(而不是任何 CPU)。我还更改了目标框架(4.0 客户端配置文件或 4.0 而不是 4.5)。现在,当我尝试编译我之前提到的代码时,只有一条警告消息,但其余的工作正常。希望这可以帮助那里的人!

PS不要忘记将所有dll和conf目录包含freeswitch配置文件(freeswitch.xml)放在bin/debug文件夹中。

于 2013-11-17T19:19:54.440 回答