What is an SDK? (C++) - c++

Just in general terms, for a noobie. I apparently need an 'SDK' to install something; what is this?

An SDK is a set of libraries which hold reusable code that you in turn use to develop applications. Whether those applications will run in Windows, on an XBOX, and iPhone, in a Flash application, etc. determine what SDK you should be using.
Take the iPhone for example. To write an iPhone application, you write code in a language called Objective-C (which looks and feels just like C, but with Smalltalk's object-model). Anyway, every time you write an app, you don't need to rewrite the code that draws text on the actual screen or registers the actual screen-touches. Instead, Apple provides the code that all application developers will need to do simple things.
Likewise, if you're writing for Windows, there are libraries to do things like draw an actual window, or connect to the network stack.
All of these common libraries, along with some other tools, make up an SDK.
For C++, you will probably see a lot of mention of Boost. This is not an SDK, but rather a set of libraries that contain code that a lot of other developers find useful.
What platform are you trying to write for? Are you just getting into C++ in Windows and looking to get started? Are you trying to write a game for some console?

"Software Development Kit" - a set of tools and libraries that let you develop software.
An example would be the iPhone SDK, which lets you develop software for the iPhone.

An SDK for a given product in general includes what you need to create an interface or an application based on that product. That's why "software development kit", a set of things needed to build software. It is strange though that an SDK is necessary for an install, could you provide more details?

An SDK is a tool kit that helps you develop software for a certain platform.
Help us out with some context! We might just be able to get you the correct SDK.

The OP indicates that the SDK is needed to install software. If this is the case, then maybe the OP is really asking is "Why is an SDK needed to install software, given that I am not developing (compiling) software?"
The OP tagged the question with SDK, which provides a definition and if the OP took the time write the question, the OP would in all likeliness Google SDK.
I suspect this is a case where moderators could have helped the OP to refine the question.

Related

Is it possible to make mods in C++ for the bedrock edition on a Windows 10 PC?

(thread title) bedrock minecraft more recognizable as "Windows 10 Edition" Minecraft, is it possible to create a sub category UI menu similar to that in Java minecraft where it says "mods" but in bedrock? and to add mods you make a mods folder that adds the mods coded in C++ (which the language bedrock/windows 10 MC is coded in)?
although this has been answered by #Kosaro, I just wanna add that you can create plugins to use on a PocketMine server. this is mainly written in YAML and PHP, so its not really what your looking for exactly but it a bit more open than just the addons that Minecraft allows you to create. plugins like this are what make things like slapping a NPC on a server like Mineplex possible, or an economy system on a factions server. although this is all dependent on whether you have a pc to host the server, and if your willing to port forward to play with others
It is possible through Blocklauncher. And these mods are called native Mods. It involves disassembling a file in Minecraft apk and using the function calls to call our own function. It is actually so complex. I only found two places to learn.
Tutorials by artus9033 (I've never used these Tutorials)
Github page by byteandahalf (Note: Page 9 is WIP)
Blocklauncher also uses javascript as a bridge between C++ and Minecraft, but it only has very few functionalities compared to C++. Add-ons are also good but have very fewer functionalities than javascript.
Hopes it helps you
Edit1: Blocklauncher is dead I don't know it before. It will work for older versions.
Edit2: There is another app inspired by Blocklauncher which you may like
https://github.com/TripleCamera. I don't know how to install it, but he made it. Blocklauncher scripts will not work (I guess). Blocklauncher works for version 12 and below of Minecraft
No, Minecraft Bedrock edition (aka Windows 10 edition) does not support C++ mods. The only type of mod that Bedrock edition supports are "add-ons", which are either resource packs (which change textures, models, sounds, animations, etc) or behavior packs (which change how mobs behave).
You are able to modify the UI using resource packs, here is an example from the official wiki: https://minecraft.gamepedia.com/Tutorials/Bedrock_Edition_creator_guidelines#UI
You can find more information and tutorials on the official reference page: https://minecraft.gamepedia.com/Add-on
Yes it is possible but it would be very involved and I’m not sure if this would be what the question really pertains to. The way I’ve seen it done is by a program (modding client) injecting itself into the Minecraft process. The injection resembles a virus’s methodology somewhat and the source code for the hacking/modding program was mostly cpp. Look up horion hacked client github. The client seems to be dead now though.

How to build a cross-platform mobile application using common C++ Business Logic and Data Access Layers

We are trying to create an Application for all mobile platforms (Android, iPhone, Windows phone). We will build the User Interface using the native development languanges for each platform (Java, Objective C, C#). For the intermediate layers (DataAccess Layer and Business Logic Layer) we plan to use C++ for all platforms.
We are going to use libraries like Curl, sqlite3, libzib. So I think a good solution would be to create two seperate C++ projects (DataAccess and Business Logic) and make references to those libraries we need. First we are going to start with Android, so I will include those two projects as prebuilt static libraries using Android NDK and in the jni folder I will add some methods that they will communicate between UI and Business Logic. Later we will do the same for the other two platforms. Since I am very new to C++ I would like to make the following questions:
Do you think that this theoretically will work?
What problems are we going to face (e.g debugging, using Curl in different operating systems)?
Are there any open source mobile projects using the same approach?
Do you think that this theoretically will work?
Yes, I've written and app for Android and iOS that uses a data access layer written in C++ on both platforms. I wrote the Android edition and a colleague wrote the iOS edition. It is not open source, so I can't show you the code.
What problems are we going to face (e.g debugging, using Curl in different operating systems)?
Debugging the shared C++ code can be a pain in the ass on Android. I've never gotten the debugger for work on Windows. I normally resort to careful reading of my code and printing messages to LogCat if it is not something I can reproduce and debug on iOS. Normally this only affects the JNI layer that links the C++ business logic and the native UI code.
You'll probably have to build 3rd party libraries separately for platform. Curl has instructions for building it for each platform so that shouldn't be much trouble.
Apart from learning JNI, the biggest problem I had was that the app had to look the same (or very similar) on each platform. I'd recommend looking into Qt Mobile Edition as
πάντα ῥεῖ suggested, however it doesn't currently support Windows phone. Still, you would be able to write one UI for two of your three platforms at least - and your shared business code would still be reusable. We are in the process of starting a second app and Qt is definitely looking like the best option for us. I don't think we'd want to repeat the experience of trying to provide the same functionality on two platforms using very different APIs.
Are there any open source mobile projects using the same approach?
I'm not aware of any off-hand, but I'm sure you can Google it.

Can I make a rather native C++ app with Android?

I'm interested in the following features:
Writing an app for Android Market that is written completely in C++ (a port of existing product actually).
Use fast screen-buffer pixel pushing (or rather using OpenGL ES for this).
Grab user input and direct it to C++ code.
Is it legal to write such an app for Market? Is Market policy somehow strict to such things?
As of NDK r5 with Android 2.3 (Gingerbread) this is possible, although I assume only devices to support natives apps must have Gingerbread on them.
From the native-activity sample:
The Android SDK provides a helper class, NativeActivity, that allows you to write a completely
native activity. With a native activity, it is possible to write a completely native application.
NativeActivity handles the communication between the Android framework and your
native code, so you do not have to subclass it or call its methods. All you need to do is declare
your application to be native in your AndroidManifest.xml file and begin creating your native
application.
It is really not my cup of tea but there is something called Android NDK (Native Development Kit) to use if you want to write your program in C. Not sure how the C++ compiler support is though.
As far as I know your app can be almost 100% native code but keep in mind that by walking that way you will probably have a hard time supporting the different CPUs out there in Android hardware. If you need to bootstrap the native code so that it is started from java it is probably not a very big problem for you.
I found a few different tutorials when googling for "Android NDK". This one is a very minimalistic Hello World. Obviously you want something much more than a library that returns a string to java but it is a good first start and you will probably have to do all of the things described. Do a search using NDK and Android as keywords and you get a good selection. I see no reason to list them here as such lists tends to be outdated and broken within a year or so.
I guess the official Android Developer site from Google will stay put and be updated on new releases of the platform, it has a link to the current NDK.
With Gingerbread (Android 2.3) it looks like you can build your entire app in C++.
cf:
http://phandroid.com/2011/01/11/android-developers-blog-awesome-ndk-leads-to-awesome-apps/
"
With the latest version of the NDK, r5, many big improvements have been made to coincide with the release of Gingerbread. The most major is the ability to code a native application for Android 2.3 entirely in C++. This means even programmers and developers with no Java knowledge won’t have to implement a single line of that code..."
Can't vouch for the veracity of this blogger, however, from what I have read, it appears you can do this
There is no 100% native solution but what I think you are looking for is the Android NDK (Native Development Kit)
From their site "Please note that the NDK does not enable you to develop native-only applications. Android's primary runtime remains the Dalvik virtual machine."
I believe it lets you make calls to your own native code from an Android application
I have personally never used it for my games, but I am sure it would help on a lot of things (like being able to manage my own memory and not have "lag" do to the garbage collector)
conversations in this thread can help you.
http://groups.google.com/group/android-ndk/browse_thread/thread/50362904ae0574cf
essence is,
It is possible to make Native only apps and Android Market doesn't restrict you either.
But with limited support for native development, there is high chance of using some of the non standard functionality which might break in future releases.
http://developer.android.com/guide/basics/what-is-android.html
"The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language."
http://arstechnica.com/open-source/news/2009/06/android-goes-beyond-java-gains-native-cc-dev-kit.ars
In general, you don't. There is some limited C++ support through JNI, but it is mostly intended to supplement Java code, not replace it. There's no framework/API support (AFAIK) for C++, so doing this isn't really an option.

to program GUI app , what will be the must user and developer frendly toolkit in c++

i like to build desktop application , that will be must user friendly in view
what i mean is that the look and feel will be natural in the way the user used to see windows
apps .
and this toolkit/framework to be as much as possible easy fast to develop from the developer side in c++ .
Could we ask some more questions, what do you mean by user friendly(system integration easy keybingings/Accessibility)?
Which platforms(windows only? You seem to indicate this, if so xp-7?
Would fairly easy crossplatform support be a plus))?
Do you want a form builder? an ide? special libraries?
open source or closed source?
do you mind paying?
qt is probably the most recommended
option although there is also
FLTK
Juce
wxwidgets
gtk+(c based or use with gtk-- a c++ wrapper)
I'd go with Qt.
It's a mature cross platform library that is easy to setup and to use. There's also a ton of resources available. The QT designer can also help you to quickly create your forms. There's even a visual studio plugin for it!
As others have pointed out Qt is a great choice. I went through the same search when I started coding C++ coming from Delphi, and this is where Qt shined. It was the only option I found that offered a complete solution: GUI, DB access, cross-platform system calls (file-access, start-processes), XML, native platform configuration (text files in *nix, win-registry, etc), multi-threading.
It was a one-stop shop for everything I needed.

What to use when building a desktop application? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
I'm making desktop application for my own use.
I can't decide on whcih language/toolkit/framework to use.
I would like a good User experience and a not so bad Performance.
The choices in my mind are:
wxPython
Titanium
Adobe AIR
any other suggestions that would fit
-- EDIT
I would also like it to be cross-platform
Experience, I've got some experience in Java, Python, HTML/JS. (Haven't done much .net stuff).
I would live to learn if needed.
There are a lot of other considerations.
What platform? What OS? What level of backward compatibility? What runtimes are on the clients?
What sort of graphics support do you need? 3D? 2D?
What kind of interoperability do you need?
What are your deployment scenarios?
What languages do you want to write this in?
There are literally hundreds of technologies out there. You can only come up with a design when you have specified what your main constraints are.
The first thing I'll say is that I would favour Web applications where possible. Of course for many things you can't—Web browsers for example. :) But where you can you should. Sure you have cross-browser issues but the OS/library cost of a desktop app is really high now.
That being said, if what you're doing needs to be done as a desktop app or you simply want to do it that way as a personal preference I would choose:
.Net (C# or VB.NET) if you only need to run on Windows or
Java (Swing, SWT, etc) if you want to run on non-Windows platforms.
I would choose from these two for no other reason than they're the most proven. Sure there are other options Adobe Air, Python, etc. Python in particular has real apps written in it so it would be my third choice. Overall though, these stacks are just less proven for this particular task.
depending on your desktop OS. For Windows, you may get Microsoft Visual Studio Express Edition of C# or VB.Net. For Mac computer intel based computer, you have free XCODE available to do it or use JavaScript to build widget applications.
Another option to look at would be QT. It's a cross platform C++ framework with Java & Python Bindings. It really does boil down to what type of application you want to build though and which platform(s) you want to target it at. If you're aiming at Windows specifically, you might want to consider using .NET and C# to take advantage of native support, on OSX, Objective-C and Cocoa, or on Linux C/C++ & whichever API set your targeted distro uses. And for cross-platform, which platforms would you like to target? Windows? OSX? Linux (Ubuntu, OpenSuse, Fedora etc.)? That will also dictate your choice.
Try Flexonrails
then convert with adobeAir
:)
it will be good
im doing my desktop application with that
Depending on what skills and tools you have available to you, as others have pointed out.
If you're on windows one simple accessable option is HTA applications.
http://msdn.microsoft.com/en-us/library/ms536496(VS.85).aspx
if you're on a mac, dashcode is a similar option for, not just authoring widgets, but also full on web applications.
both options give you access to many more api's than typical javascript has access to, such as filesystem access, or the ability to execute system commands.
There's a zillion others, but those options come for for free with their respective operating systems.
Dependes on what kind of application you would like to build, but you definitely should put in your list of tools to evaluate (at least) Delphi.
It compiles to native win32, is a rapid application development tool and has support for a lot of areas like databases, internet, com and many many others. Also, is built into Object Pascal, a very simple to learn language.
Up to some point, you can make it's applications cross platform using others IDEs like Lazarus in Linux.
As of 20 march-2018 almost everything has shifted to javascript. Have a look at Electron.js . Its usefull to build cross platform desktop apps in javascript , html and css.