Unable to load DLL 'tcxpscom_native' error for v15

Discussion in '3CX Phone System - General' started by jamesdesouza, Mar 1, 2017.

Thread Status:
Not open for further replies.
  1. jamesdesouza

    Joined:
    Jan 23, 2015
    Messages:
    5
    Likes Received:
    0
    Hello,

    I tried to upgrade my custom app to v15 but I get error on initialize of app.

    I've done everything on sample project to connect.
    Here is my code:
    Code:
    class Connector3CXv15
        {
            static string instanceBinPath;
    
            public static void Bootstrap()
            {
                try
                {
                    var filePath = @"C:\Program Files\3CX Phone System\Instance1\Bin\3CXPhoneSystem.ini";
                    if (!File.Exists(filePath))
                    {
                        //this code expects 3CXPhoneSystem.ini in current directory.
                        //it can be taken from the installation folder (find it in Program Files/3CXPhone System/instance1/bin for in premiss installation)
                        //or this application can be run with current directory set to location of 3CXPhoneSystem.ini
    
                        //v14 (cloud and in premiss) installation has changed folder structure.
                        //3CXPhoneSystem.ini which contains connectio information is located in
                        //<Program Files>/3CX Phone System/instanceN/Bin folder.
                        //in premiss instance files are located in <Program Files>/3CX Phone System/instance1/Bin
                        throw new Exception("Cannot find 3CXPhoneSystem.ini");
                    }
                    instanceBinPath = Path.Combine(GetKeyValue("General", "AppPath", filePath), "Bin");
    
                    //AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
                    Connect(filePath);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }
    
            public static bool Connect(string filePath)
            {
                {
                    var a = new Random(Environment.TickCount);
                    //unique name PhoneSystem.ApplicationName = "TestApi";//any name
                    PhoneSystem.ApplicationName = "Connector3CXv15" + a.Next().ToString();
                }
    
                #region phone system initialization(init db server)
                var value = GetKeyValue("ConfService", "ConfPort", filePath);
                var port = 0;
                PhoneSystem.CfgServerHost = "127.0.0.1";
                if (!string.IsNullOrEmpty(value))
                {
                    int.TryParse(value.Trim(), out port);
                    PhoneSystem.CfgServerPort = port;
                }
                value = GetKeyValue("ConfService", "confUser", filePath);
                if (!string.IsNullOrEmpty(value))
                    PhoneSystem.CfgServerUser = value;
                value = GetKeyValue("ConfService", "confPass", filePath);
                if (!string.IsNullOrEmpty(value))
                    PhoneSystem.CfgServerPassword = value;
                #endregion
                var dns = PhoneSystem.Root.GetDN(); //Access PhoneSystem.Root to initialize ObjectModel
                //SampleStarter.StartSample(args);
                //PhoneSystem.Root.Disconnect();
                return PhoneSystem.Root.Connected;
            }
    
            static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
            {
                var name = new AssemblyName(args.Name).Name;
                if (name == "3cxpscomcpp2")
                    return Assembly.LoadFrom(Path.Combine(instanceBinPath, name + ".dll"));
                else
                    throw new FileNotFoundException();
            }
    
            [DllImport("kernel32.dll", EntryPoint = "GetPrivateProfileStringA")]
            static extern int GetKeyValueA(string strSection, string strKeyName, string strNull, StringBuilder RetVal, int nSize, string strFileName);
            static public string GetKeyValue(string Section, string KeyName, string FileName)
            {
                //Reading The KeyValue Method
                try
                {
                    StringBuilder JStr = new StringBuilder(255);
                    int i = GetKeyValueA(Section, KeyName, String.Empty, JStr, 255, FileName);
                    return JStr.ToString();
                }
                catch (System.Exception e)
                {
                    throw e;
                }
            }
    
            public static string GetParameterValue(string name, string DefaultValue, ref bool exists)
            {
                try
                {
                    exists = true;
                    return TCX.Configuration.PhoneSystem.Root.GetParameterByName(name).Value;
                }
                catch
                {
                    exists = false;
                    return DefaultValue;
                }
            }
        }
    In addition, I'm using Topshelf library.

    How should I solve this problem?

    ***

    I can not connect even with the code below
    Code:
    {
    var a = new Random(Environment.TickCount);
    PhoneSystem.ApplicationName = "Connector3CXv15" + a.Next().ToString();
    }
    PhoneSystem.CfgServerHost = "127.0.0.1";
    PhoneSystem.CfgServerPort = 5485;
    PhoneSystem.CfgServerUser = "cfguser_default";
    PhoneSystem.CfgServerPassword = "z320xszg1lj";
    var dns = PhoneSystem.Root.GetDN();
    I got the same error at .Root property.
     
    #1 jamesdesouza, Mar 1, 2017
    Last edited: Mar 1, 2017
  2. Sopock

    Sopock Member

    Joined:
    Jul 11, 2012
    Messages:
    448
    Likes Received:
    20
    Maybe you need to change or Set the Copy Local Property of a Reference?:confused:
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  3. HurricaneH

    Joined:
    May 31, 2017
    Messages:
    2
    Likes Received:
    0
    Did you ever get beyond this problem. I'm wrestling with it now. Also interested in best practices or leassons learned to test within Visual Studio
     
  4. jamesdesouza

    Joined:
    Jan 23, 2015
    Messages:
    5
    Likes Received:
    0
Thread Status:
Not open for further replies.