alexB
-Interested User-
Posts: 75
Joined: Dec 19, 2009
|
Posted: Dec 28, 2009 01:12 PM
Msg. 1 of 15
While compiling C++ Samples I got 52 error. They seem to be all of Unresolved External Symbols
Error 7 error LNK2019: unresolved external symbol "int __cdecl RegisterClientApp(struct HWND__ *,char *,char *,char *)" (?RegisterClientApp@@YAHPEAUHWND__@@PEAD11@Z) referenced in function "protected: virtual int __cdecl CHistoryCOM3Dlg::OnInitDialog(void)" (?OnInitDialog@CHistoryCOM3Dlg@@MEAAHXZ) HistoryCOM3Dlg.obj HistoryCOM3
Error 9 error LNK2019: unresolved external symbol "void __cdecl RemoveClientApp(struct HWND__ *)" (?RemoveClientApp@@YAXPEAUHWND__@@@Z) referenced in function "void __cdecl callback(int,int)" (?callback@@YAXHH@Z) console_stream.obj console_stream
Error 11 error LNK2019: unresolved external symbol "void __cdecl SetCallbackFunction(void (__cdecl*)(int,int))" (?SetCallbackFunction@@YAXP6AXHH@Z@Z) referenced in function main console_stream.obj console_stream
Etc.
I would appreciate if you resolve these three errors and I may try to resolve teh rest based on your model.
Thanks.
AlexB
|
DTN_Nathan_Bartsch
-IQ Developer-
Posts: 33
Joined: May 3, 2004
Telvent DTN
|
Posted: Dec 28, 2009 01:23 PM
Msg. 2 of 15
The C++ samples were meant to be compiled / linked in a 32 bit memory model to support more developers. The external references you've listed (RegisterClientApp, RemoveClientApp, SetCallbackFunction) are from the IQ32.dll, which is a 32-bit DLL. 32-bit DLLs will not link into 64-bit applications.
If you've got the project in 32-bit mode, it is possible that you've removed the IQ32.dll / lib from the linker. I would try adding the IQ32.dll / lib back into the project (or getting a fresh copy of the example application that already has it in the link step)
Nathan W. Bartsch - Senior Software Engineer - DTN
|
stargrazer
-DTN Guru-
Posts: 302
Joined: Jun 13, 2005
Right Here & Now
|
Posted: Dec 28, 2009 01:23 PM
Msg. 3 of 15
To be specific, these aren't compiling errors, they are link errors, which would indicate you aren't bringing in an appropriate library. And based on http://forums.dtn.com/index.cfm?page=topic&topicID=2472, you may be out of luck. Version 4.6 and less can't do 64 bit. They say 4.7 is slated to do so. The basic solution is to write a small 32 bit program to get the IQFeed login and started. Then write your 64 bit stuff to connect via tcp/ip to obtain the data.
|
LonnieS
-King of IQ Development-
Posts: 127
Joined: Jun 2, 2004
|
Posted: Dec 28, 2009 01:32 PM
Msg. 4 of 15
Correct, 4.6 is 32-bit only.
4.7 supports 64 bit applications at runtime . IQFeed still runs as a 32 bit app in it's own process space but can be launched and used by 64 bit apps.
The sample apps are 32 bit - they cannot be compiled as 64 bit.
Lonnie Shumate Development Manager, IQ Systems DTN Market ACCESS
|
alexB
-Interested User-
Posts: 75
Joined: Dec 19, 2009
|
Posted: Dec 28, 2009 01:45 PM
Msg. 5 of 15
That's what I suspected. It is very distessing. But how come when I had platform set to 32 bit I could not access odbc32.dll?
When is the next 64 bit version is going to be available?
Thanks.
AlexB
|
LonnieS
-King of IQ Development-
Posts: 127
Joined: Jun 2, 2004
|
Posted: Dec 28, 2009 01:55 PM
Msg. 6 of 15
There is no plan for 64 bit sample apps. The purpose of sample apps is to demonstrate techniques for use of IQFeed. This can be accomplished in 32 bit as easily as in 64 bit. The libraries you are having problems are used to implement 32 bit code - not to use IQFeed.
I suspect you had problems with the 32 bit compile because you did not have your compiler properly configured for 32 bit.
Lonnie Shumate Development Manager, IQ Systems DTN Market ACCESS
|
alexB
-Interested User-
Posts: 75
Joined: Dec 19, 2009
|
Posted: Dec 28, 2009 02:25 PM
Msg. 7 of 15
I switched back to x32 and got my 18 errors. I set Exclude certain libraries: version.lib; odbc32.lib with no effect whatsoever on the outcome. It is becoming ridiculous.
AlexB
|
alexB
-Interested User-
Posts: 75
Joined: Dec 19, 2009
|
Posted: Dec 28, 2009 02:27 PM
Msg. 8 of 15
I suspect you had problems with the 32 bit compile because you did not have your compiler properly configured for 32 bit.
Ny compiler is set by Properties=>Platform, that's it. I reset it to x32 and got back my 18 errors: Version.lib and odbc32.lib cannot be open.
AlexB Edited by alexB on Dec 28, 2009 at 02:29 PM
|
alexB
-Interested User-
Posts: 75
Joined: Dec 19, 2009
|
Posted: Dec 28, 2009 03:13 PM
Msg. 9 of 15
There must be a 32 bit version of version.lib. I tried to download and installl x86 Windows SDK 2.0 and could not find this file in the library which is very short.
Where did you get it from?
AlexB
|
alexB
-Interested User-
Posts: 75
Joined: Dec 19, 2009
|
Posted: Dec 28, 2009 03:21 PM
Msg. 10 of 15
You guys should create a 64 bit version of IQ32.dll and other dlls. It is pretty elementary. It would have taken a couple of days for me for isntance. I've read some threads and it seems many people are suffering from your shortcoming.
Thanks.
AlexB Edited by alexB on Dec 28, 2009 at 03:23 PM
|
alexB
-Interested User-
Posts: 75
Joined: Dec 19, 2009
|
Posted: Dec 28, 2009 03:58 PM
Msg. 11 of 15
I am trying to build a new C++ application from scratch and attach the cpp files one by one. It does not work out. When I specified the app as x32 I got an error that the file kernel32.dll could not be opened. So, I had to switch to x64 but here again I will run into the same predicament.
Reading your posts I cannot figure out how you handle this issue if you ever do.
It would be ridiculous for me to set up an x32 machine for this purpose specifically or run emulation mode.
AlexB
|
LonnieS
-King of IQ Development-
Posts: 127
Joined: Jun 2, 2004
|
Posted: Dec 28, 2009 04:07 PM
Msg. 12 of 15
version.dll and odbc32.dll are 32 bit libraries. They are not used in 64 bit compiles - that is why you received 50+ linker errors (unresolved External symbols) when you switched to 64 bit. All references to functions in those libraries were unresolved because the 64 bit compile had no libraries defined with the appropriate function labels to resolve the 32 bit calls from the sample apps.
The version.dll and odbc32.dll are installed with your VS2008, they are not provided by IQFeed. Your issues are with your use of the compiler not IQFeed. You are having trouble accessing the files supplied with the compiler for compilation of 32 bit code - which VS2008 does support. You do not need a 32 bit machine - 32 bit apps run fine on a 64 bit machine.
A 64 bit version of iq32.dll is unnecessary, the solution, already implemented in the latest beta, is to directly launch iqconnect. That will not resolve the issue you are experiencing with compiling 32 bit sample apps. iq32.dll is not compiled in the 32 bit compile of sample apps - it is provided by IQFeed already compiled.
Again these are sample apps, they are provided to demonstrate techiques for using IQfeed. The compilation is simply a way to see the effects of the techniques but to use and understand them in your own application you will need to examine the code. These are not templates for development and were not intended to be.
The techniques are not dependent on 32 or 64 bit and can be easily incorporated into a 64 bit app that you write. However, if you need a 64 bit method of launching IQFeed then you will need to download the 4.7 beta.
Lonnie Shumate Development Manager, IQ Systems DTN Market ACCESS Edited by LonnieS on Dec 28, 2009 at 04:08 PM Edited by LonnieS on Dec 28, 2009 at 04:09 PM
|
alexB
-Interested User-
Posts: 75
Joined: Dec 19, 2009
|
Posted: Dec 28, 2009 05:03 PM
Msg. 13 of 15
Thanks, I will have to try the beta. For some reason I cannot launch a 23 bit C++ app in my VS2008. I understand it should work and I have a number of C# applications I developed in 32 bit environemtn that I run on 64 machine and even continue to develop. It is that I am not that familiar with C++ as of late. Having some difficulties after so many years of not working with it.
AlexB
|
alexB
-Interested User-
Posts: 75
Joined: Dec 19, 2009
|
Posted: Jan 1, 2010 04:12 PM
Msg. 14 of 15
|
DTN_Steve_S
-DTN Guru-
Posts: 2093
Joined: Nov 21, 2005
|
Posted: Jan 4, 2010 01:10 PM
Msg. 15 of 15
AlexB, currently the beta is only available to registered 3rd party developers. As a result, you must first login to the developer website at http://www.iqfeed.net/dev/index.cfm?login=login and then click the "Download API" link in the left hand navigation menu to get the current beta.
|