=============================================================================== === Carbide.vs 3.0.1 for UIQ, 2008-04-18 === =============================================================================== Carbide.vs 3.0.1 is a set of tools that enable efficient Symbian OS C++ application development using Microsoft Visual Studio .NET 2005 and supported Symbian OS SDKs. Carbide.vs 3.0.1 targets developers that have Visual Studio skills. For these developers, Carbide.vs offers an easy entry into Symbian OS C++ development by providing a full development environment for Symbian OS development using Visual Studio. This package supports UIQ 3.0, UIQ 3.1, and UIQ 3.2 SDKs to the Carbide.vs product. Major changes since Carbide.vs 2.0.x =============================================== - Support for WINSCW SDKs only - Project upgrade for projects that are created with Carbide.vs 2.0.x - Project upgrade function helps to download missing WINSCW SDKs - Edit/build/debug cycle without stopping/restarting emulator when only .cpp files are edited - Support for project build decencies in templates and VS projects - Resource, Icon and Help compilation in a similar way as .cpp compilation - Changes to resource, help and icon file are detected in incremental builds - .rss-, .miflist- and .cshlp-fill built when saved - New templates and improvments in the Fragement template view - Ability to group your templates and get a preview - Support for Symbian OS C++ snippets - Requires an addition VSPowerToys tool from Microsoft - Tools to help package a finalized project for Symbian Signing - WSDL tool integrated with the product - Improved debugging experience - Filtered debug message view - RDebug functions output to debug window - Support for PRJ_EXPORTS in the bld.inf file Features: ========= - Support for available WINSCW UIQ SDKs - Extends Visual Studio .NET 2005 C++ project type - Visual Studio workflow as well as look and feel, easy to learn - Wizard based operation based on customer editable templates - Support for Symbian OS C++ snippets - Automatic maintenance of key Symbian files for basic functionality - Build for emulator to test and debug - Build for phone and easy application launch to phone - Application signing as required by Symbian OS 9 - Symbian Signed preparation as required by Symbian Signed - Certificate store for Symbian project - Online documentation for product itself and supported SDKs - Template validator UIQ 3 Specific Templates ======================== When adding code using the provided templates please note that all the necessary changes might not be made by the tool. Carefully read the comments at the inserted code to see what updates are required manually to make the project compile and run. Typical manual operations required are to add commands and controls to the .hrh file, adding #include's to the .cpp files and to include new .ra files into the .rss file. Also link libraries might need to be added to the list of linker input files in the project settings. Project Templates ----------------- UIQ3 Skeleton - A simple skeleton UIQ 3 application and project. UIQ3 HelloWorld - The hello world example application provided as a template. Class Templates --------------- UIQ3 MultiPageView - Creates a view derived from CQikMultiPageView UIQ3 ViewBase - Creates a view derived from CQikViewBase Fragment Templates ------------------ CPP file fragments: UIQ3 InfoDialog - Inserts a simple information dialog. UIQ3 InfoMsg - Inserts a simple information message. UIQ3 QueryDialog - Inserts a simple query dialog. UIQ3 ListBoxViewDialog - Creates a view dialog containing a listbox UIQ3 SimpleDialog - Creates a dialog derived from CQikSimpleDialog UIQ3 ViewDialog - Creates a dialog derived from CQikViewDialog RSS/RA file fragments: UIQ Command - Creates a new QIK_COMMAND to be added to a QIK_COMMAND_LIST Item Templates -------------- UIQ3 MMP - Creates a new UIQ3 specific .mmp file UIQ3 PKG - Creates a new UIQ3 specific .pkg file System Requirements: ==================== Sofware requirement: - Microsoft Windows XP Pro SP2 or Windows Vista - Microsoft Visual Studio .NET 2005 SP1, including J# runtime environment - At least one supported Symbian OS SDK, see below - ActivePerl, version as required by the Symbian OS SDKs in use, prefered 5.6.1.X - Java runtime 1.5 or later - Nokia PCSuite 6.7 or later, to enable application installation For HW requirements, see Microsoft Visual Studio .NET 2005 Compatibility: ===================== Carbide.vs 3.0.1 supports the following SDKs: UIQ SDKs for CodeWarrior compiler (WINSCW) UIQ 3.0 SDK UIQ 3.1 SDK UIQ 3.2 SDK Known Issues: ============= Fatal error LNK1318: Unexpected PDB error; This is caused by some incompatibilities between the WINSCW compiler and the Microsoft linker. A fix will be released later. EpocWrapper.exe fails to attach to the Epoc.exe process. This is caused as the Emulator starts to slowly and the wrappers wait time elapses. You can just hit F5 again and it will attach to the Epoc.exe process of your SDK. There is no need to shutdown the emulator. When debugging, using the "Step Over" command ('F10') over code that uses some of the SDK DLLs will trigger a breakpoint. This will cause debugging to end and the application to crash. A workaround is to define a breakpoint on the next line in your code and use the "Continue" command ('F5') instead. Project build might fail if there is a dependency between resource files with different names. Carbide.vs assumes that a _reg.rss file depends on .rss and _loc.rss files with the same name, if they exist. E.g. "HelloWorld_reg.rss" depends on "HelloWorld.rss" and "HelloWorld_loc.rss". If there are other dependencies between resource files, you may compile the files manually in the correct order. Another solution is to edit the "Symbian custom build" property page and add the build output of the file that needs to built first to the "additional dependencies" field of the file that should build later. For example, if "HelloWorld_reg.rss" depends on "MyStrings_loc.rss", the "additional dependencies" of "Helloworld_reg.rss" should include "$(EPOCROOT_[SDKNAME])\[...]\MyStrings_loc.r01". If Carbide.VS is installed on USB or other external drives, it will prevent .NET COM component from working properly (due to .NET security features for non-fixed drives). Only install Carbide.vs on a fixed hard disk. Virtual base class destructors cause linker errors. Because Visual Studio linker does not allow unresolved externals as virtual destructors (even when in reality only the derived classes are called), Carbide.vs defaults with /FORCE:UNRESOLVED switch and filters out the errors caused by these. However this causes the side effect that actually missing destructor implementations go unnoticed as they are filtered out as well. When not using a library which requires this kind of behavior, it is recommended to remove the UNRESOLVED option from linker options. You can add filters to these errors. Please check the Carbide.vs help for more information. Error while debugging "Debugging information for epoc.exe cannot be found". Visual Studio displays an information note (Debugging information for epoc.exe cannot be found) that debugging information for epoc.exe cannot be found or is not matched. This is because the debugger initially starts epoc.exe which does not contain debug information. YOu can still debug your own project and therefore disregard the information note. Including files in project from the "show all files" view with the "include in project" command fails, when the file is inside a folder with the same name as a Visual Studio filter. Only use the "Add" -> "Existing item" command to add existing files to a project. Errors when building help files. The reason for these fails may be the wrong Perl version. Recommended Perl version for SDKs is 5.6.1. Using newer or older one might not work properly - especially when building help files. When a project is created from a template that creates multiple projects at the same time, the project "Base Name" persisted property is incorrectly set. Other templates that use the "Base Name" value will provide incorrect default values as a result. To fix, open the "Carbide.vs Project Properties" wizard and change the value of the "Base Name" entry on the "Persisted properties" page. Note that the persisted values are stored for each project so you need to update each project. When using an .rls file in a Carbide.vs Classic projects, the rls_string function does not work. To fix, change "rls_string" to "#define". Sometimes errors can occur when creating mbm files if there are many .bmp files on the same line in the START BITMAP block. To fix, only have one .bmp file per line in the .mmp file. Visual Studio Intellisense (used to implement code completion and dynamic help) is not always able to correctly parse Symbian OS include files. To improve Intellisense behaviour with Symbian-based include file, see workaround in the On-line help Troubleshooting section. When importing an existing application where 2 or more resource files (in different directories) have the same name, only one of the files will be imported. The other files can be imported manually using Visual Studio "Import Existing Item" (see also next issue). If a project contains several resource (.rss) files with the same name, the automatic .mpp update does not function correctly. You can either rename the resource files so that all have unique names or disable automatic .mpp file updates in the "Carbide.vs Properties" view. When importing multiple projects from a bld.inf file, the user is given the option to specify the solution root. The selection however has no impact and the solution root is always located in the project root of the first project that is imported. When importing a Symbian9 project as a classic project, the mmp file update keeps the resource statements in the form of START RESOURCE .. END. If you need the mmp file to be compatible with earlier SDK versions, simply delete the resource statement from the file and do a new mmp update. In the Carbide.vs Properties view, the value for the "Active .pkg file" must always be relative to the project, do not use an absolute path. === (c) Copyright UIQ Technology AB 2008. All rights reserved.