I got some Release files from a .net solution in order to try it on two machines(Windows 11 and Windows 10) and the problem I am facing occurs when I try to run the exe file where I get this exception:
Unhandled Exception: System.DllNotFoundException: Unable to load DLL 'rhcommon_c': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
So, I have been reading, trying, and similar for a couple of days, and still nothing. I have followed the official documentation steps(installing rhino 6 c++ SDK, templates in Visual studio, Visual Studio SDK, setting up a firewall, etc and besides that, I have installed Rhino 6) and still nothing.
Finally, I wanted to try the official sample app:
https://github.com/mcneel/rhino-developer-samples/tree/7/rhino.inside/dotnet/SampleHelloWorld
and I get the same exception.
Is there anything I am missing?
UPDATE ON rhinocommon.dll
Rhino common is composed of the following:
RhinoCommon.dll - This is a pure .NET DLL that plugins can reference and use to work with Rhino.
RhinoCommon.xml - This is an XML file that contains SDK documentation comments specific to RhinoCommon.dll. Programming development environments like Visual Studio and MonoDevelop use this XML file to display tooltips and other helpful information while the developer writes code.
rhcommon_c.dll and monomanager.rhp - These are C++ shared libraries compiled for specific target platforms (Win64 and macOS). These libraries are used by RhinoCommon, but should never be directly accessed by plugin developers.
All .NET plugins that ship with Rhino for Windows, including the Python interpreter, reference RhinoCommon and the term common is meant to be just that: an SDK that can be used across Rhino platforms.
so, basically, what should I do just in order to try out a release version of solution?
Related
I used VSTO a couple of years ago with Visual Studio to do some nice little addins for outlook. But I can't justify the cost of VS to do some part time projects. As a result I have installed the free version of VS and downloaded a promising office addin tool called NetOffice.
I am ok at c# but can't find a hello world example that includes setting up the environment to work.
I have VS express installed but don't know what to do with the NetOffice assemblies etc to get a simple example working.
I looked through the documentation and found a reference to "Netoffice Developer Toolbox" which set up projects for people who are not using the full version of VS. That sounded like exactly what I was after so I downloaded that also.
When I run the app NetOffice.DeveloperToolbox.exe I get a lot of errors, it does eventually load but tabs are missing and nothing seems to work.
Start up error is:
An attempt was made to load an assembly from a network location which
would have caused the assembly to be sandboxed in previous versions of
the .NET Framework. This release of the .NET Framework does not enable
CAS policy by default, so this load may be dangerous. If this load is
not intended to sandbox the assembly, please enable the
loadFromRemoteSources switch. See
http://go.microsoft.com/fwlink/?LinkId=155569 for more information. |
NotSupportedException | Void .ctor()
Following the link in the error message takes you to a page that has this description:
If you were directed to this topic because of an error message in the
Visual Studio project error list or a build error, see How to: Use an
Assembly from the Web in Visual Studio.
I didn't know i was referencing anything in the web so don't know what to do next.
Can anyone tell me what I need to do to get NetOffice working or if they have found/written a tutorial to getting it sorted IE a hello world tutorial?
Thanks in advance for your help.
you try to start a .net assembly from a network location.
this is forbidden from net policies(normaly)
move the toolbox folder to your hd and everything is okay.
NetOffice contains examples/tutorials for each office product in the release package. you find a lot of example online too directly from the main page(netoffice.codeplex.com) anyway, NetOffice is a 1:1 wrapper, this means if you already know the office object model from VBA or PIA(VSTO), you are ready to use NetOffice(you can use existing PIA code in NetOffice).
I have an InvalidProgram exception with the message
Common Language Runtime Detected an Invalid Program
This happen in an application that we didn't change in the last 3 month.
The only change is that we have change our build server (reinstall it).
The server is running Windows 8 and has Windows SDK 7.1 on it.
We package the application with ClickOnce.
This exception happen in a very specific method call, after methods of the same class as assembly are already called, so I think it rules out assembly loading issues.
I can't find a lead to where to start debug this issue. I think it related to the version of the tools I use on the build server such as MSBuild, CSC, mage.exe and such.
I found people say this error might happen when I have very long method names, but this does not seem to apply here because I don't have long methods names and I don't generate code myself.
The application use .NET 4.0
Update 1
It is for sure a problem with the compile tools (the version I think) or the ClickOnce packaging tools because when I compile and run the application on my machine it work, when I install the packaged application on my machine it show the exception above.
add this argument to your compiler: /nowin32manifest
I wrote with VS10 the following projects:
a C# (.net 4.0) program which calls
a C++ unmanaged dll, which make use of boost::thread
a setup project which includes the C# executable, the C++ dll, the boost::thread dll and some other files. Moreover during the installation there is a check if the framework .net 4.0 is installed, and if not it will be downloaded.
The compilation (x64 for each of the three projects) is ok, and the program works on my pc (Windows 7 64bit).
I tested the program on some other computers (all Windows 7 64bit) and I noted that:
in the ones with VS10 and Boost the program works
in the ones without VS10 and Boost the program gives an error in the C++ Dll
I think the problem is that some boost Dll is missing. Am I right?
Or the problem could be related to VS?
edit:
I have to mention that the structure of the program is the following:
main form (C#) in which some parameters are set, then a backgroudworker calls
the C++ DLL which do its stuff and uses boost::thread
it does some computations
when it get some results, writes them on file
continue with its computations and so on
the main form has a filesystemwatcher which looks for the results file and do some stuff with the results.
Also, when I get the error, the main form correctly loads and the parameters could be set. The error happens when the backgroundworker starts his work (calling the C++ DLL).
So I'm quite sure that there is no problem with the framework installation.
Update:
It turns out that I forgot to include some DLLs in the setup project. Now, including them the error changed.
Now, at the same point as before (and on the same computers) I get another error:
BadImageFormatException: An attempt was made to load a program with an
incorrect format
I read this article, but I have set x64 in both C# project and in C++ DLL and the setup project has as TargetPlatform x64. Any idea?
VCRedist package is missing on target machine. It should be available in VS SDK directory. Also you may need to install .Net Framework on target machine (.Net Framework contains VCRedist package). If you don't have instalation files for those, they are available on microsoft sites i.e. VC10Redist for x64 is here
In such cases I use the tool Dependency Walker
Launch it and select your executable to discover the missing libraries.
It gives clues indicating what is needed to install then.
If your C++ DLL is dynamically linked to the CRT, then you have to deploy also the VC++ CRT DLL's, i.e. MSVCR100.DLL and C++'s MSVCP100.DLL on the target machine (they are already available on your dev machine, where you have VS2010 installed, so on that machine your C++ DLL loads fine; but you can't assume that on your client's machine the CRT/C++ DLL's are available).
There are several deployment options: you may want to read this documentation on MSDN.
I finally found the solution!
The C++ DLL needs the mpfr library for multiple precision floating point computations with correct rounding.
I was including (shame on me!) the incorrect version of the library (x86) and this was the motivation for the error:
BadImageFormatException: An attempt was made to load a program with an incorrect format
Then in all the computers (three different computers!) in which the program was ok there were both (unlucky and misleading coincidence):
Boost and VS10 installed and
a x64 version of the library in a folder contained in the Path environment variable.
So, in some way the program found the right version of the DLL.
Including the right version of the library in the Setup Project fixed the problem.
Thanks to Kamil Klimek, Stephane Rolland and Mr.C64 for their precious suggestions.
we have created a c# application which calls a c++ dll(sdbm.dll). It is working properly in most of the PCs except some PCs. The dll is created using VC++ 2008 and application is done in VC# 2005. Following are the errors occured when the dll functions are called from the C# application.
Error occured in one PC is as follows
=====================================
Unable to load sdbm.dll :This application has failed to start because the application configuration is incorrect.Reinstalling the application may fix this problem (Exception from HRESULT :0x800736B1)
Error occured in 2nd PC
=====================================
Error Signature
Appname:app.exe Appver:1.0.0.0 Modname:msvcr90.dll Modver:9.0.30729.4148 Offset:0002fc96
Any help would be appreciated
As the others already stated in their comment it seems to be a problem with the dependencies of your sdbm.dll. The simplest way to find out the root cause you should get a copy of DependencyWalker and throw your sdbm.dll into it. First on a machine where it runs without any problems and afterwards start DependencyWalker on one of the problematic machines to see it's output.
It gives you some informations about what DLLs it couldn't found on the current machine. Thous leading you to the problematic libraries.
Nearly always the problem is a missing Visual C++ Redistributable Package (2005, 2008, 2010) or that your library is compiled and deployed as debug version. In this case it will link to the debug versions of e.g. mfcxx.dll by using the mfcxxd.dll. But these debug versions are only installed with the corresponding SDK (or Visual Studio) and not with the redistribution package. Thus leading to problem on the user machine but not no a developer machine.
i am working project in c# Visual studio 2009,i am using c++ dll in my project and also i call that dll through my function . In my system the project run successfully.but in other system not in single system more than system i checked it shows exception like unable to load dll. i am check that dll in dependency walker it shows msvcr71.dll is missing.how i get this.?i need better solution for this
The problem is that your native C++ DLL depends on the library msvcr71.dll. This is not part of the standard windows installed hence you must take some action to get it onto the target machine.
The simplest way to do this is to just copy the DLL around with your application. The following KB article covers this.
Documentation on msvcr71.dll
http://msdn.microsoft.com/en-us/library/abx4dbyh(VS.71).aspx
You're probably missing something in your installation of the SDK (or Visual Studio). I would recommend a Repair or Reinstall.
look on msdn for info about redistributables - this tell you what you need to install on a non dev box to make things work
This is not programming related. You are missing a dll file on your target system. Download and put in "windows/System32" and it should run.