I am trying to refresh my memory here as I did some studies many years ago but the results elude me.Also todays c/c++ compilers may have better optimizations.Say I have a static library that includes three obj modules.Each of these object modules has a number of functions. These functions do not reference any other functions within the obj module.My main app links this library but only references one function from each of the object modules.
Question: Are the complete contents of each module linked into my main app or are todays linkers smart enough to just link the functions used?
I have a libcx3d.a which contains my VrmlParser class and other classes which are used by VrmlParser. I have a main.cpp which does this :
VrmlParser vp = new VrmlParser(); double **VOB = vp.getVOB();
When I compile using g++ main.cpp -o main -L. -lcx3d, I get the following errors :
'VrmlParser' was not declared in this scope. expected ';' before vp. 'vp' was not declared in this scope.
There is a header file called "VrmlParser.h" in the static library. Should I include this header file in main.cpp ? If so, will include "VrmlParser.h" work ? I have the .a and .cpp in the same directory. I can't find the header file for the static library.
I have written a program that uses boost in visual studio 2012. The only boost library I used is filesystem by doing.
1)Properties->Linker->General and adding the path or the .lib to the additional dependencies. The libraries, link at compile time.However when i move the exe to a different computer, it doesn't work. Therefore the libraries were dynamically not statically linked. So my question is how do I statically link the filesystem library, so that i can include boost/filesystem.hpp in visual studio 2012?
I am trying to use the C++ version of VOCE voice recognition API. It is an API built in Java, with support to C++ as well.
It works totally fine when I am working with VC2010. In vc2010 I have put all the necessary include files in the Vc++ Directories->Include Directories, and the library D:Program FilesJavajdk1.7.0_45lib in Linker->Additional Library Directories, and i added jvm.lib in Linker->input And everything works great
However, whenever I am trying to execute it in Qt, I am getting the error:
Code: thread.obj:-1: error: LNK2019: unresolved external symbol __imp__JNI_CreateJavaVM@12 referenced in function "void __cdecl voce::init(class std::basic_string<char,struct std::char_traits<char>, class std::allocator<char> > const &,bool,bool,class std::basic_string<char,struct std::char_traits<char>,
I have function that returns historical data. I can access it, using file name. If I use file name, it reads that file and saves it to dictionary, so that in the future, if historical data is required for the same file, it does not read it again (it's lazy loading). If no file is supplied to the function, it tries to read file which is given in app settings.
However, for unit testing, I do not want to read any file. Instead, I want it to use small sample of hardcoded historical data. In order to do that, I think, I need to introduce interface to it. Then I can use some IoC to choose between different implementation for unit testing purpose and ordinary launch of application.
Function to get history is given as follows:
public static class Auxiliary { private static Dictionary<string, MyData> _myData; public static MyData GetData(string fileName = null) { // ... } }
I have created default Unit Test project with Visual Studio so, as far as I know, by default it uses MSTest as test runner and MSUnit as unit testing framework but it does not have any IoC container so I should manage NuGet packages for solution and install Unity.
As far as I know, MSUnit (aka Moles) can unit test static methods (it's unconstrained isolation framework, like Typemock Isolator, unlike NUnit) but still many people suggest not to use any static methods for unit testing.
Should I use shim or stub [URL] Stubs should be used for faking external dependencies and here it is not external library, but my own code.
I am running ubuntu and have tried adding -1GL to the end of my gcc compiling commands but the error says "unrecognized commandline option: 1GL". do i have to install any packages to get this to work?
I am trying to add in a few 3rd party libraries to an existing project solution. I have no source code or knowledge on how the libraries were built (i.e. what run-time library was used). I have recieved the following errors and warnings:
1>CAPS_LIB.lib(PCEfunc.obj) : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance 1>libcmt.lib(getenv.obj) : error LNK2005: _getenv_s already defined in MSVCRT.lib(MSVCR90.dll) ***There are multiple of these errors 1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library 1>MSVCRT.lib(cinitexe.obj) : warning LNK4098: defaultlib 'libcmt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library 1>libcmt.lib(crt0.obj) : error LNK2001: unresolved external symbol _main 1>C:Program Files (x86)BCI 2000 v3progRelWithDebInfo..CAPSVRInterface.exe : fatal error LNK1120: 1 unresolved externals
CAPS_LIB.lib is one of the libraries I am trying to add in and it seems to be the one causing the problem. I believe I have added in all three libraries into the project solution correctly, but I can't seem to find a solution to these errors.
I've been reading about libraries; How to make them, how to use them, the different types of libraries, etc..
When using a shared library, does the program require that library to be installed on the computer after the program has been compiled into an .exe?
Ie.. if somebody downloaded a "Helloworld.exe" that I had compiled on my computer using a shared library (that wasn't part of a standard operating system), would they also need that shared library on their computer for the program to run without errors?
and for Static Libraries, when I compile a program using a static library, does it include in the final binary only the functions of the library that are actually used, or does the compiler add in the entire library?
How to create standalone program. For now I have simple program connecting to MySql Database and when i run it, shows me error, libmysql.dll is missing... When i put libmysql.dll in same folder works. Now my question is, how in code blocks can i compile so i won't require libmysql.dll anymore and be able to use it on any machine.
Is it possible to use & change global variables in a Static Library? For example:
I declare a bool test = true; globally.
Then later in an exported function If the user wants, he can set that test to false. So the program later when checks test if it's true, will notice that it's not true, since one of my function changed it.
There is a file compressor called FreeArc (that has GPL code) and a sub project called Unarc (meant for file extraction only) that is free for any use.
Their source codes can be downloaded from here: [URL] ....
Unarc has a makefile for making a dll. I am trying to make it static instead (.a file), using MinGW, but am failing.
If I use the .o files compiled by the makefile to make one .a file, the decompression methods don't seem to be recognized as they should, so I can't extract anything. These decompression methods are added through static functions called withing the .cpp files of each method, so I guess their code is not being executed.
I have a non-MFC static library which I share between a number of different projects, some non-MFC and some MFC. Currently the static library uses a typedef of std::wstring and std::string for UNICODE and non-UNICODE builds.
After discovering it's possible to use CString in non-MFC applications, by including atlstr.h header, I decided I'd rather that than using stl strings and having to keep converting between the different types. However, I seem to be struggling with linker errors when linking the library with a MFC application.
Can I create a non-MFC static library using CString from atlstr.h and link it with a MFC application?
//Program to convert from Fahrenheit to Celcius #include <iostream>
double fahrenToCelsius (double t); //precondition: //t is a valid tempreture in Fahrenheit //postcondition: //returns equivalent temp. in Celcius
[Code] .....
And here is the problem: [Linker error] C:UsersOwnerAppDataLocalTempcckex8SZ.o:fahrenToCelsius.cpp: (.text+0x3d): undefined reference to `fahrenToCelsius(double)' collect2: ld returned 1 exit status
I'm suspecting the program maybe that I saved it wrong? I saved it as fahrentoCelsius.cpp inside the folder "Work" ( I created this folder) which is inside the folder "Dev-cpp".
I am porting an application from Linux to Windows. Since it is a GTK app most of the stuff works; I have to touch a little here and there. One problem though I cannot find the solution as it seems. The application uses a plugin system for easy expandable functionality. The interface to the plugin is very simple: an init function, a worker function, and a deinit function. The plugins shall have access to the main applicationsymbols (functions global variables). I cannot find a working (and feasible) way under Windows to make the linking work. I always get "undefined reference" errors for symbols which exist in the application. I am using MinGW 4.6.2. I made a stripped down demo application to be able to better (and faster) test the principle. I am using the dlfcn-win32 project from Ramiro Polla [URL]... for the dynamic loading stuff and it works like a charm.
Here is the project: plugintest.tar.gz plugintest.zip
It tried a number of commandline options to the linker for the application (--export-all-symbols, --export-dynamic, -rdynamic (apparently not supported in MinGW)) as well as for the shared objects (--allow-shlib-undefined, --enable-auto-import, --enable-runtime-pseudo-reloc).
As you can see in the provided makefile under Linux it is just "-shared" for the .so. Under Mac OS X (Darwin) it is "-bundle -bundle_loader <app name>".
Either it is a different configuration / environment or I must have overlooked something. How to do this and if it is even possible in Windows?
Here is a .zip archive of the dlfcn stuff with modified makefile, which works on the cmd.exe command prompt; MSYS is not required. Just adjust the MinGW installation path in config.mak and type 'make" and 'make install'. dlfcn-win32-r19.zip
I've been trying for more than one month to access a method found in a library called libcocosnas_static.a. I'm using Cocos2d-X version 2.0.4. The library has been used many times by my company to make games using cocos2d-1.0.1-x-0.12.0 without any problem.
This is what I've done: 1- I added the include paths of the library to both eclipse and Android.mk 2- Included the .h file using #include "NASPlatformUtil.h" 3- Added the libcocosnas_static.a file to the proj.androidobjlocalarmeabi folder 4- Added "LOCAL_WHOLE_STATIC_LIBRARIES += cocosnas_static" to the Android.mk file 5- Called the function using: NASPlatformUtil:: openUrl("http://xxx.xxx.com/");
I can right click on the function, click Open Declaration and get it without any problem, but the compiler keeps on giving me that dreaded error...
I downloaded Oracle instantclient-basic-nt-12.1.0.1.0.zip and instantclient-sdk-nt-12.1.0.1.0.zip and extracted both to c:oracle I then went into visual studio 2013 and created a Win32 Console application with all default parms.
I then went into project -> properties -> C/C++ -> General -> Additional Include Directories and added my include path C:oraclesdkinclude
I then went into project -> properties -> Linker -> General -> Additional Library Directories and added C:oraclesdklibmsvcvc11
I then went into project -> properties -> Linker -> Input -> Additional Dependancies and added oraocci12.lib
The program compiles but when I debug i get a RUNTIME error that says "The program can't start because oraocci12.dll is missing from your computer. Try reinstalling the program to fix this problem. But I know the file exists in C:oraclesdklibmsvcvc11oraocci12.lib
This is the code if it makes a difference
Code: #include "stdafx.h" #include <iostream> #include <occi.h> using namespace std; int _tmain(int argc, _TCHAR* argv[])
I have been trying to get the libcurl library to work with the following program shown below but I have been getting the following error:
||=== Build: Debug in test3 (compiler: GNU GCC Compiler) ===| objDebugmain.o||In function `Z8getstockPcS_':| undefined reference to `_imp__curl_global_init'| undefined reference to `_imp__curl_easy_init'| undefined reference to `_imp__curl_easy_setopt'| undefined reference to `_imp__curl_easy_setopt'| undefined reference to `_imp__curl_easy_setopt'| undefined reference to `_imp__curl_easy_setopt'| undefined reference to `_imp__curl_easy_setopt'| undefined reference to `_imp__curl_easy_perform'| undefined reference to `_imp__curl_easy_cleanup'| undefined reference to `_imp__curl_global_cleanup'| ||=== Build failed: 10 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
I'm using Windows 7 64bit and Code::Blocks. Under 'build options' linker settings and link libraries I added all the libraries listed in the lib64 folder namely, libcrypto.a, libcrypto.dll.a, libcurl.a, libcurldll.a, librtmp.a, libssh2.a, libssh2dll.a, libssl.a, libssl.dll.a, libz.a, libz.dll.a, and libzdll.a. Under search directories compiler I included c:libcurl-7.34.0-devel-mingw64include and under search directories linker I included c:libcurl-7.34.0-devel-mingw64lib64.
Okay so I'm writing a simple program - so far with just 1 header and 1 .cpp file to go with it. I'm getting strange errors saying that my struct hasn't been recognised even though I declare it in the header. The code involved is --
Code: #include<stdio.h> #include<iostream> #include<sstream> #include"bots.h" //#include"prisonersDilemna.h" //write program to battle multiple bots with a random choice generator //and after all iterations post who comes out on top.
[Code] ....
||=== Build finished: 6 errors, 0 warnings ===|
How should the syntax be? Why does my program not recognise bot as an object type? Why can I not have a void method?
So on lines 36 - 39 (The commented out functions) is where I'm sure is causing this error because once I don't comment them out pretty much everywhere Flink or Rlink is used or defined I get this error.