<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif;" dir="ltr">
<p>Guys, I'm looking to embed FreeSWITCH into a piece of Windows software which is extendable through the use of add-ins (written in C#).</p>
<p>When installed the software has an add-ins folder containing subfolders for each add-in to be loaded.</p>
<p><br>
</p>
<p>By default FreeSWITCH would expect the base directory to be that of the executable, but in this case I want it to be down in the add-ins subfolder since it makes more sense to have it with the add-in rather than the application. I figured that this could
 be solved easily enough by adding the following line of code before the call to switch_core_init():</p>
<blockquote style="margin-right: 0px;" dir="ltr">
<p><font color="#0000ff" face="Consolas" size="2"><font color="#0000ff" face="Consolas" size="2"><font color="#0000ff" face="Consolas" size="2">freeswitch</font></font></font><font face="Consolas" size="2"><font face="Consolas" size="2">.</font></font><font color="#880000" face="Consolas" size="2"><font color="#880000" face="Consolas" size="2"><font color="#880000" face="Consolas" size="2">switch_core_init</font></font></font><font face="Consolas" size="2"><font face="Consolas" size="2">((</font></font><font color="#0000ff" face="Consolas" size="2"><font color="#0000ff" face="Consolas" size="2"><font color="#0000ff" face="Consolas" size="2">uint</font></font></font><font face="Consolas" size="2"><font face="Consolas" size="2">)</font></font><font color="#000080" face="Consolas" size="2"><font color="#000080" face="Consolas" size="2"><font color="#000080" face="Consolas" size="2">flags</font></font></font><font face="Consolas" size="2"><font face="Consolas" size="2">,
</font></font><font color="#0000ff" face="Consolas" size="2"><font color="#0000ff" face="Consolas" size="2"><font color="#0000ff" face="Consolas" size="2">switch_bool_t</font></font></font><font face="Consolas" size="2"><font face="Consolas" size="2">.</font></font><font color="#a000a0" face="Consolas" size="2"><font color="#a000a0" face="Consolas" size="2"><font color="#a000a0" face="Consolas" size="2">SWITCH_FALSE</font></font></font><font face="Consolas" size="2"><font face="Consolas" size="2">,
</font></font><font color="#0000ff" face="Consolas" size="2"><font color="#0000ff" face="Consolas" size="2"><font color="#0000ff" face="Consolas" size="2">out</font></font></font><font face="Consolas" size="2"><font face="Consolas" size="2">
</font></font><font color="#000080" face="Consolas" size="2"><font color="#000080" face="Consolas" size="2"><font color="#000080" face="Consolas" size="2">err</font></font></font><font face="Consolas" size="2"><font face="Consolas" size="2">);</font></font></p>
</blockquote>
<p>However doing this seems to cause a problem when trying to load certain modules (in particular mod_sofia.dll). This seems to be because the new base directory that I have specified is not included in the alternate search path (set using SetDefaultDllDirectories
 and AddDllDirectory) so when a call is made to switch_dso_open to load the module it doesn't search that directory for modules such as pthread.dll. Now I could call AddDllDirectory as part of my freeSWITCH initialization code and then call RemoveDllDirectory
 when shutting down, but I was wondering if there was a possible justification for this being done in the
<span>CSharp_switch_directories_base_dir_set</span> method of freeswitch_wrap.cxx?</p>
<p><br>
</p>
<p>Interestingly there is also a bug in the <span>switch_dso_open </span>method as the second call to LoadLibraryEx doesn't capture the return value in the lib variable, so even if the second call to LoadLibraryEx succeeds switch_dso_open will return NULL.</p>
<p><br>
</p>
<p><br>
</p>
<p>Paul<br>
</p>
<p><br>
</p>
</div>
</body>
</html>