[Csnd] Embedding Csound (Windows)
Date | 2020-11-22 21:10 |
From | Søren Jakobsen |
Subject | [Csnd] Embedding Csound (Windows) |
Hi all, I need some help to embed Csound in a Windows application - that is in a way so that the computer on which the application is installed does not need to have Csound already installed. I have embedded Csound64.dll in my application, which seems to work fine, but Csound64.dll then seems to reference PortAudio, which it can't find (when PortAudio is not installed on the computer on which the application is installed). Csound gives me the message: "unknown rtaudio module: 'PortAudio', using dummy module". I have tried adding PortAudio.dll to my application - installed in the same directory as Csound64.dll - but that doesn't seem to work. Is there some way to make Csound64.dll search for PortAudio.dll in it's 'own' directory, or another way to fix this? Perhaps PortAudio could be compiled into Csound64.dll to have everything 'self contained'? Best regard, Søren Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2020-11-23 00:47 |
From | Michael Gogins |
Subject | Re: [Csnd] Embedding Csound (Windows) |
The portaudio.dll message is a warning, not an error. It does not mean Csound will not work. Csound should be able to find the PortAudio DLL but for that to work, if I recall correctly, you need to place the DLL in the Windows system directory or in a directory identified in the OPCODE6DIR64 environment variable, this can include more than one directory (separated on Windows by semicolons). Try adding the directory for your application to the OPCODE6DIR64 directory. If you want to monkey with the build system you can indeed build PortAudio directly into csound64.dll, but you will also need to add a little code that will do the same work that finding the PortAudio DLL file and loading it does. This is not hard to do, there is code for doing similar things in the Csound for Android code in the csound-extended repository. The best way to do this is to build PortAudio as a static library and link it with csound64.dll. Hope this helps, Mike ----------------------------------------------------- Michael GoginsIrreducible Productions http://michaelgogins.tumblr.com Michael dot Gogins at gmail dot com On Sun, Nov 22, 2020 at 4:10 PM Søren Jakobsen <sorenkj@gmail.com> wrote: Hi all, I need some help to embed Csound in a Windows application - |
Date | 2020-11-23 21:02 |
From | Søren Jakobsen |
Subject | Re: [Csnd] Embedding Csound (Windows) |
Thanks Mike! yes Csound does still work - there is just no actual sound. I tried adding PortAudio to Windows\System64 and to set OPCODE6DIR64 but it didn't help. I am wondering if there might be other such dependencies from the dll, and I wonder how I will know what they are (the dependencies may be present on the machine where I make my test installation, but not on other machines). I don't think I will be able to refactor Csound to have the dll include PortAudio (or other dependencies) - guess for will (unfortunately) have to ask users of my app to also install Csound separately. Best regards, Søren On 11/23/20, Michael Gogins |
Date | 2020-11-23 21:37 |
From | Steven Yi |
Subject | Re: [Csnd] Embedding Csound (Windows) |
I think something to check is if indeed your app is using OPCODE6DIR64 to load rtpa.dll, and that the portaudio dll (not sure the exact name but it should match with whatever rtpa.dll is linked to) is located besides rtpa.dll. You can always use dependency walker (https://www.dependencywalker.com/) to check linkage. Csound itself (i.e., csound64.dll) does not have a link to portaudio, just rtpa.dll. (At one point, all of our libraries were statically linked, but portaudio might have been a dynamic link.) I think you should be able to work out the portaudio issue without having to require Csound be installed separately. On Mon, Nov 23, 2020 at 4:02 PM Søren Jakobsen |
Date | 2020-11-24 13:42 |
From | Michael Gogins |
Subject | Re: [Csnd] Embedding Csound (Windows) |
https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer This will tell you all DLLs that CsoundQt or Csound or any other Windows process has loaded. ----------------------------------------------------- Michael GoginsIrreducible Productions http://michaelgogins.tumblr.com Michael dot Gogins at gmail dot com On Mon, Nov 23, 2020 at 4:02 PM Søren Jakobsen <sorenkj@gmail.com> wrote: Thanks Mike! yes Csound does still work - there is just no actual |
Date | 2020-11-24 15:57 |
From | Rory Walsh |
Subject | Re: [Csnd] Embedding Csound (Windows) |
There is also: On Tue, 24 Nov 2020 at 13:43, Michael Gogins <michael.gogins@gmail.com> wrote:
|
Date | 2020-12-06 18:09 |
From | Søren Jakobsen |
Subject | Re: [Csnd] Embedding Csound (Windows) |
Thanks for the tips - adding rtpa.dll seems to work:) I am not sure how those dependency tools would have helped me figure out about rtpa.dll (they don't work when dll's are loaded in some specific ways?) - but I probably need to learn better how to use them. On 11/24/20, Rory Walsh |
Date | 2020-12-06 18:52 |
From | Michael Gogins |
Subject | Re: [Csnd] Embedding Csound (Windows) |
About Dependency Checker, it checks both the code (before running) and the calls to load libraries (while running). This latter option you will need with programs like Csound that load libraries programmatically at run time. This is what you get when you "profile" an app. ----------------------------------------------------- Michael GoginsIrreducible Productions http://michaelgogins.tumblr.com Michael dot Gogins at gmail dot com On Sun, Dec 6, 2020 at 1:09 PM Søren Jakobsen <sorenkj@gmail.com> wrote: Thanks for the tips - adding rtpa.dll seems to work:) |