mono -> MonoDevelop f# 64 bit - mono

I have ubuntu 16.04 and monodevlop editor, I have added AnyCpu option and trying to compile f# code , when I check the exe it is 32 bit, I have ubuntu 64 bit.
When I compile the same code on windows using xamarin and AnyCpu option I can see in task manager that its not 32 bit exe. So it works in windows but , anycpu option for monodevlop is not giving 64 bit exe in ubuntu.
Any idea what I should do to get 64 bit exe as output
Mono Version is 4.6.2 on ubuntu.
Regards,
Amit Bhagwat

Related

How to let CefSharp WinForms 32 bit run on Windows 64 bit?

I have downloaded the CefSharp 71.0.0-pre01 Source code from the official release, and built it successfully by VS 2015 on my Windows 7 Ultimate x64.
I have checked all x86 and x64 release build, and the project built all 22 items successfully includes the example exe.
The WinForm Example folder has 2 output in the bin, the x64 release can run well on my Win7 x64, but the x86 (32 bit) release doesn't work. Once I run the "CefSharp.WinForms.Example.exe", it shows
CefSharp.BrowserSubprocess has stopped working
When I click to check issue details, it shows:
Event Name: APPCRASH
Application Name: CefSharp.BrowserSubprocess.exe
But when I run the x86 release on the Win7 32bit machine, it works well.
I wanted to build an AnyCPU version but the project doesn't support AnyCPU, then I assumed the x86/32bit should work on both 64/32 machines. Is it possible to do that?
A case I've experienced is setting max_old_space_size to a large value which causes render subprocess to crash on startup when running in 32bit mode. Removing this option resolved the issue for me.

"interops made for a different target platorm." and "ActiveX not properly registered"

Thank you for any and all help... I've never seen this bug before... I have several vendor supplied DLLs for talking to a Signature Capture Device. We build our C# windows app platform target set to "any cpu" on an XP x86 machine. When the application is run on Win7 32-bit computer it works fine. When it is run on Win7 64bit computer it fails.
Running the Visual Studio 2010 debugger on Win 7 x64 in "Debug mode" works fine. Running in Release mode on Win7 x64 fails.
I can change the platform to target x64 then Release mode gives "interops made for a different target platorm." When I delete and recreate the interops for 64 bit target I get "ActiveX not properly registered".
Thank you in advance.
Make sure you module not depends of 32 bits libs.
Use Dependency Walker or Fuslogvw.exe to diagnose module load fail.
To interop 32/64 bits COM see Access x86 COM from x64 .NET
My solution was to change the Project->Properties->Build->Platform Target from "any cpu" to "x86". The application now runs on win7 64 bit and 32 bit and XP x86.

Windows 64 bit Server vs x64 apps

I have the source code for a 32-bit dll (Windows) that I am trying to re-compile as a 64 bit dll. I have been told that the app "can compile in VC++ 64-bit mode to target AMD64 or Itanium processors running Windows 64 bit Server."
I am trying to decipher this: if it runs on Windows 64 bit server, should it also run on x64 bit Windows?
AMD64 and x64 and x86-64, and Intel64 and EM64T are essentially same thing, with different names.

The 64 bit dll of Microsoft SharePoint is running on 32 bit machine

I am working on SharePoint domain. Sometime I need to do development for event receiver and windows service etc.
Last week I have installed a Windows Service on my server to upload the documents from a local folder. Server is 64bit machine and "Windows server 2008 R2" installed on server as OS to run SharePoint Foundation 2010. Service was running properly.
The requirement was, no user will go to the server to upload the document. So I have installed the service on local users machine. Some users were having 32 bit Machine and 32 bit OS and other users are working with 64 bit. while installing the service I got an error on 32 bit machines. Error was "This solution is for 64bit machine". After changing the target platform from 64bit to x86, the service was installed successfully on 32 bit machine and started working properly.
Now the question came:
To work with SharePoint Object Model, I am using SharePoint 64 bit
dll in my Windows service which is installed on 32 bit machine and 32
bit OS.
Is it possible that the 64bit dll will work on 32 bit machine?
In what scenarios we can face the problem of "64 bit dll will not
work on 32 bit machine"?
What should I do if I want to install the same solution on 64 bit
and 32 bit machine? I don't want to change the target platform
each and every time.
UPDATE:
After R&D I found "32 bit solution can be installed on 64 bit dll with some terms and conditions" refer http://www.samlogic.net/articles/32-64-bit-windows-folder-x86-syswow64.htm.
In 64 bit machine we are having Program x86 and SysWOW64 folders to handle the 32 bit dll functionality.
Now the question is:
How we are handling the 64 bit dll on 32 bit machines?
And
Is it confirm that the SharePoint dlls are "any CPU"?
Regards.
Not sure I understand what you are trying to do, so I'll try to be exhaustive:
SharePoint Object Model are only available on SharePoint servers, not user workstation. They indeed rely on 64 bits DLL that only work on 64bits OS.
SharePoint 2010 allows you to use the "Client Object Model" that work on remote computer like use workstation. They are .Net DLL, not specific to 32bits or 64bits. Just compile your exe with "Any CPU" and it will work just fine
Generically speaking, 64bits exe only work on 64bits OS. In .Net you can however use "Any CPU" that will work for both 32bits and 64bits. This however will only work if you exe and its dependencies are full .Net (no native code).

Using a 32 bit dll on a 64 bit machine

I have an old project which uses a 32 bit dll. This works fine on 32 bit processor, however when I install the same project on a 64 bit OS it does not work.
Is there any way to convert 32 bit dll to 64 bit? Is there an alternative solution solution to make my 32 bit dll work in a 64 bit OS?
Your 32 bit dll should work just fine on a 64 bit machine as long as it is loaded into a 32 bit process - attempting to load a 32 bit dll into a 64 bit process will fail.
If your project is a .Net (e.g. C#) application then you should be able to target your assembly at x86 in order to get your 32 bit dll working correclty:
Right click on your project in Visual Studio and select Properties
On the Build project properties tab ensure that the Platform target drop down reads "x86" instead of "Any CPU"
If you platform target is "Any CPU" then your project will normally be targeted at whatever platform is available, i.e. x64 on a 64 bit OS - this will prevent your 32 bit dll from being loaded.
If your project is not a .Net assembly then the equivalent steps needed to do the above will be different.
Alternatively you can attempt to obtain a 64 bit version of your dll - if it is a dll that you have produced then you will need to migrate it to 64 bit yourself. If not then you are dependent on the original suppliers providing a 64 bit compatible version.