What does static library and dynamic link library mean to WP8? - windows-phone-8

When reading about WP8 C++ project template, I see
Windows Phone Empty Dynamic Link Library
A project for creating a native dynamic-link library for a Windows
Phone app.
Windows Phone Empty Static Library
A project for creating a native static library for a Windows Phone
app.
What are static library and dynamic link library mean to WP8?
Supposed I have my Windows library source (openssl for example), do I need to convert to WP8 static library to be consumed by WP8 apps?
Whether I use WP8 static or dynamic link library, I must wrap them in WP8 runtime component in order for my app to consume, am I right ?

At the basic level, static and dynamic libraries are the same as any other Windows environment (so see this other SO question for more clarification).
For a WP8 app you will either need to produce:
A XAML .NET/Windows Runtime hybrid app.
A DirectX C++/C project (usually a game).
For 1. you would need to wrap up either your static .lib or .dll in a WP8 Runtime component, for your .NET side to consume.
For 2. it looks like you end up building a traditional .exe. In that case you would link directly to your .lib or .dll in the normal way. (I not so familiar with this one, so may be missing some subtleties here).
In any case it's easier to link everything if you have all the source code in VS and reference the projects that build .lib or .dll you need, rather than the referencing the binaries themselves.
That way you can ensure all the code is built to target the correct runtime environment (targetting the Phone APIs, using the correct CPU architecture). Also VS should then automatically add all dependencies into your final XAP package.

Related

ActionScript 3- Wrap DYLIB to be used with AS3

I have to create Flash application with AS3 and use functions in DYLIB.
Let say the function name is Open();
Is it possible? And how do I add the DYLIB into my AS3 project?
EDIT
Ok as I can see from the comment, I need to wrap the DYLIB. I am not sure how to do it. Can anyone help ?
To get a dynamic library to work with AIR you must create an ANE (AIR Native Extension) that uses the dylib. The ANE you create should expose parts of the library that you require as AS3 functions.
There are many tutorials available for creating ANEs, start with:
https://www.adobe.com/devnet/air/articles/extending-air.html
Once you've created the ANE that accesses the dylib, when packaging your application you must go through a few additional steps to correctly sign the dynamic library.
make sure you are using AIR 27+
add a Frameworks directory to your application at the root level
ensure this directory is packaged with your application
place any dynamic libs and frameworks in this directory
These libraries will then be correctly signed with your application certificate.

MissingManifestResourceException on Windows Phone 8.1 with .resx resources

I'm developing a Windows Phone 8.1 app that also targets Android(Xamarin)
As ever I added my string resources(.resx) on a PCL and referenced them on my launcher project to use it on my views, this all works fine on WP 8.1 silverlight but on the WinRt when I configure the project to release and run it on a device, for some reason I always get a MissingManifestResourceException. I've tried every solution for this problem out there without any success.
Note that on the emulator everything works fine, when the solution configurator is set to Debug it also works on both device and emulator. The only combination here is device and Release.
The app source code is on Github.
I was able to create a simple project to replicate this issue, basically it is a WP 8.1 app and a PCL project with the embedded resources, Download Link
Anyone has any ideas?
EDIT: After making some more testing I tried running an old Windows 8.1 app that I've done with the same localisation model and the same issue appeared so it seams to be a tool issue and not a configuration issue, since the Windows 8.1 app is on the market and everything went fine back there.
Our team ran into a similar issue which was tracked down to the runtime and not the PCL, WinRT component, or application package. That is, the resources exist within the PCL assembly, within the application package resources.pri file, but just cannot be found at runtime.
There is an active Microsoft Connect report here:
https://connect.microsoft.com/VisualStudio/feedback/details/991028/issue-using-resx-files-on-winrt-apps-windows-phone-and-windows
Our workaround was for the WinRT component to inject into each generated Resources class of each referenced PCL our own derived ResourceManager which redirected the call to the WinRT ResourceLoader instead. I've written a blog post that describes that workaround:
http://blogs.msdn.com/b/philliphoff/archive/2014/11/19/missingmanifestresourceexception-when-using-portable-class-libraries-in-winrt.aspx
I got to the bottom of this today. While bundling the app package, resources in dependencies that are not for a language being used by the app are stripped out. To prevent this from happening, add the following assembly-level attribute to your application.
using System.Resources;
[assembly: NeutralResourcesLanguage("en")]
I had the same behaviour. Today I created a new PCL Library (with another name) and copied the resx file to this project. I modified all references and everything just works fine in my WinRt (Windows Store) App now!
There was the string 'resources' in the portable class library name. Perhaps this was the problem!
I am able to reproduce this issue launching DVD sample and unfortunately in my project. I have an WP Silverlight 8.1 project registering a Windows Runtime Component Background Task and both of them using a Portable Class Library sharing some common localized strings as resources (.resx), among other things. The exception is thrown from Background Task when calling any property to get strings on generated .Design.cs class (only Release + Device).
In order to fix this I tried, without success, to use directly ResourceManager and/or to add .resx files directly into the Background Task.
I ended-up porting needed strings to .resw files and use the new "WinRT preferred" way via Windows.ApplicationModel.Resources.ResourceLoader in the Background Task project.
Seems to me that ResourceManager is not compatible with Windows Runtime anymore in release.
This is not necessary an answer, but is better than nothing since I do not have 50 reputation points for a comment.

Windows Phone 8.1 - DLL reference problems when using the camera

I'm trying to create a simple camera application according to the MSDN tutorial.
All I did was installing Visual Studio 2013 Update 3 and then created a new Visual C# \ Store-Apps \ Windows Phone-Apps \ Empty App Template and added the code to my MainPage.xaml.cs.
The first problem is, that it does not find the namespaces Microsoft.Xna.Framework.Media, System.IO.IsolatedStorage and Microsoft.Devices. According to the tutorial, I have to add the Xna DLL in the "Add references" .net Tab, but unfortunately, there is no .net tab. I only have the following categories:
-Assembly (All Assemblys are already references)
-Project
-Windows Phone 8.1 (only 5 DLLs, but different ones)
After a lot of searching, I found them in 'C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.1\Tools\AppDeploy\MdilXapCompilev8.0\Framework', but there is no System.IO.IsolatedStorage DLL.
When I ommit this using directive, I end up getting an error because it does not know this.Dispatcher.
Am I missing something? Do I have to install anything else?
The problem is probably that the link you have provided concerns WP8.1 Silverlight and you might have chosen WP8.1 Runtime project. Those are different API's - XNA is not supported in RunTime, you also won't find Microsoft.Devices there.
If you want to create your Camera App for WP8.1 Silverlight encure that you have chosen (Windows Phone Silverlight) template. Otherwise, of course you can also write Camera App but with different API - you may take a look here,also you may find something useful here at blog.

How can I use a console application with my website in Visual Studio?

Please read the following in the Visual Studio 2012 context:
I have two projects--one is a website (File --> New Website) and another is a console application (File --> New Project --> Windows --> Console Application). I am the author of the former.
The standalone app fakes the input by hardcoding it, runs through some code, and creates an output. It uses dlls from a local installation of software that I have installed on my machine to generate this output.
I read on MSDN that I cannot add a console app to a website solution in a useful manner. So, if I compile the console app to output a dll instead of an exe, can I reference that dll in my website? How can I do this exactly? I would need to pass the input value from the website to the dll, and return meaningful results from the dll. Is this possible?
Yes, you describe a feasible way to solve this. You need to create a class library project, add source code from console application to it, except the the class that has static Main method and modify (add to) that source code such that there is a class that you will be able instantiate from the code in your web application after you add the class library assembly to the web application as a reference. This class will have a method with appropriate parameters, that you will call. All this assuming that the task that console application code performs is fast and will not create noticeable delay in the web application response. If the task takes a long time, you will either have to run it in a background thread or move it outside the web application - the latter is significantly more involved.

Unable to load dll in Console or Web API project

I'm experiencing a rather strange problem.
I'm trying to interface with a Wacom signature pad, and would like to build a web service wrapper for the pad's API so that I can capture a signature on a website.
The signature pad requires two dll's to work: STUTablet.dll and STUTabletCore.dll.
I have a class library that references STUTablet.dll. Both dll files are in the class library's bin directory.
If I reference my class library from a Windows Forms application, I am able to call methods that call STUTablet.dll. However, if I reference my class library from a console application or an MVC application, an exception is thrown.
The exception is as follows: Unable to load DLL 'STUTabletCore.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E).
I have tried adding the same references that a default Windows Forms application has to my Console application, but to no avail.
Does anybody have any idea as to why STUTablet.dll is unable to load STUTabletCore.dll? There has to be some kind of dependency that I'm not fulfilling.
Thanks,
Francis :)
I had similar issues but eventually got help from Wacom UK support team and managed to get
a web based application to work on IE only with ActiveX.
Try
http://gsdt.wacom.eu/download/Signature-SDK.xml
Choose either 32 or 64 bit Signature SDK installer, plenty of SDK examples