|
I Did but I don't understand why
I am getting a list of Addreess Spaces information from z/os I only want to Add the the list box the Job Name. Asid information is 45 bytes the first 8 is the JobName. So the First would be *Master*
I moved the code which copies the first 8 charcates from CComboBox::DrawItem to the DialogBox
just got Debug Assert on the AddString I think I am doing everything right;
m_Simple.arrayptr = new char *[j+1];
traverse = instr;
for (int i = 0; i < j + 1; i++)
{
m_Simple.arrayptr[i] = new char(9);
memset(m_Simple.arrayptr[i], 0x00, 9);
memcpy(m_Simple.arrayptr[i], traverse, 8);
m_Simple.AddString(m_Simple.arrayptr[i]);
traverse = (char *)traverse + 45;
}
The twisted Arrow after the Debug Heap Assertion is pointing to
traverse = (char *)traverse + 45
So I guess there is a problem with AddString
Not sure what I am doing wrong
|
|
|
|
|
I can only assume that your instr variable does not contain the number of 45 character fields that you think. However only the debugger could confirm that.
|
|
|
|
|
I am getting
undefined reference error.
I have "included " relevant headers in souce files , I have "common path" in project includes (/usr/include /bluetooth ) ,
I can access "Open Declaration" in my IDE and it identifies function and its file...
I have no errors indicating missing
bluetooth/hci_lib.h in text file...
What did I missed??
<pre>
#ifndef MODULES_M_BT_H_
#define MODULES_M_BT_H_
#include <iostream>
#include <stdint.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
#include <bluetooth/bluetooth.h>
#include <bluetooth/hci.h>
#include <bluetooth/hci_lib.h>
C++ function
<pre>int C_BT::Scan(void) {
cout << "C_BT::Scan(void) " << endl;
int device_id = hci_get_route(NULL); if (device_id < 0) {
printf("Error: Bluetooth device not found");
exit(1);
}
return 0;
}
Error
./src/MODULES/M_BLUETOOTH/CBT.o: In function `std::C_BT::Scan()':
/media/jim/DEV/eclipse-workspace/VNAR_1204/Debug/../src/MODULES/M_BLUETOOTH/CBT.cpp:42: undefined reference to `hci_get_route'
collect2: error: ld returned 1 exit status
makefile:75: recipe for target 'VNAR_1204' failed
make: *** [VNAR_1204] Error 1
Can I get a second opinion ?
Cheers
Vaclav
|
|
|
|
|
At a guess it's a C file and you are dragging it into a C++ file and getting splattered by name mangling
Name mangling - Wikipedia[^]
The two solutions are in the above link under Handling of C symbols when linking from C++
Check are the bluetooth library files C or C++
If C the easiest is probably include all the C header files like so
extern "C" {
#include <bluetooth/hci_lib.h>
}
In vino veritas
|
|
|
|
|
Leon,
you are close, it is C file , but...
It has ( or SHOULD HAVE (?) ) __cplusplus defined and
that should make it work in C++
So where do I check if __cplusplus id actually defined ?
#ifndef __HCI_LIB_H
#define __HCI_LIB_H
#ifdef __cplusplus
extern "C" {
#endif
I'll take a look what else can be "fixed" to make it go.
|
|
|
|
|
Did you forget to include a .lib file in your build?
|
|
|
|
|
You're not actually linking in the bluetooth library.
|
|
|
|
|
I was not trying to use any library - just source.
|
|
|
|
|
Perhaps this answer on SO is it: bluetooth - Linking with libbluetooth.so - Stack Overflow[^]
(In the past, I got bit by the gcc link order thing several times.)
Alternatively, you are missing some files. Search the source you have for hci_get_route. (The point is that the linker isn't seeing this symbol.)
|
|
|
|
|
Here is an indirect answer
"None of the function definitions are present in the header files: just the declarations. The definitions are in the library"
Make sense. Somewhat.
But "definitions are in library" ?
(Perhaps some A..no affectionado wrote the "library" )
What does not make sense - the example code I am using which was already been refereed too said zilch about need to use the library nor does it even mention the name of the library.
Perhaps it is obvious to experts that library has to be linked in.
But what the dickens is " compiled against (library)" ?
This nameless library (?) is probably different for each hardware too.
|
|
|
|
|
Vaclav_ wrote: But what the dickens is " compiled against (library)" ?
It's a way of saying, build using that library.
Based on this "apt-get install bluez libbluetooth-dev" (from tutorials:common:development:bluez_programming [CubieBoard Docs][^]) suggests it's part of the bluez package.
Added: I checked the Debian repository and the package list and contents supports this.
modified 5-Dec-18 0:54am.
|
|
|
|
|
Found this procedure , for Eclipse IDE, which puts difffernt spin onto the problem.
To me it implies that linker can use "source" instead of library.
To use the latest Bluetooth kernel modules is one important thing, but without support from the user space these modules are useless. For the minimal functionality the bluez package is needed.
bluez-5.50.tar.xz
2. Copy and paste the extracted folder (named something like bluez-5.31) to the usr\include folder.
3.
4.
5. The path to usr\include folder may look something like this C:\Intel\iotdk-ide-win\devkit-x86\sysroots\i586-poky-linux\usr\include
6. Now on Eclipse (assuming your project is open) add the linker flags for your project. On Eclipse's menus select Project>Properties>C/C++ Build>Settings>Tool Settings>Cross GCC Linker>Miscellaneous, add the flag "-bluez-3.1" and click OK.
Note: This flag is basically a "-" character concatenated with the name of the bluez folder.
4. Edit the header calls on your main file; add the path to where the header files needed are. In this case bluetooth.h, hci.h and hci_lib.h are inside bluez 5.31, header calls should look something like these:
#include "bluez-5.31/bluetooth.h"
#include "bluez-5.31/hci.h"
#include "bluez-5.31/hci_lib.h"
5. Proceed to save (Ctrl + S) and Build Project.
Unfortunately Linux / Eclipse (?) won't let me add the "extracted folder" into /usr/include - need permission.
I added full path to my Bluez-5.50 and linker did not complain about that but the overall result was - now getting more errors.
I am going to look into linker "miscellaneous " options to see what is missing.
Note
the /usr/include has folder "bluetooth" which contains the needed headers.
That works fine. I have no idea how it got there.
|
|
|
|
|
As I have explained to you a number of times, header files are only used to compile your source code. That is, to convert source instructions to object code instructions. But the output of the compiler is not complete, it needs other object modules linked to it in order to execute. That is where the associated libraries come in. They need to be added to the link step so the final executable includes the code you wrote and the pre-built libraries that contain the functions that your code will be calling.
|
|
|
|
|
Plz Help Me, I am trying to make a school project which is a search engine that takes input from the user and searches the entered word or sentence within the files available. There's no compile error in the program but the program is not searching correctly the file which has the data. If the entered string matches any sentence or string in the file stored then it should display the result.
But the problem is that the strcmp or stricmp or any function which searches for a match is not working.
I am using it with if & else statement for now... If the string is in the file then it should show found else not found but it only works if there is only one word in the file. If the file which is to be searched has lots of data off course in the text format it always shows not found but if it has only one word then it says found. Plz help Me If You Can.
Also plz tell me how can i do the same thing which is to search for a particular entered word in more than one file like for example 10-20 files and then after searching it should display the whole line in the file or (files) found. Thanks For Your Help In Advance. I appreciate it !
Here's the code for searching the word in one file.
Plz also tell me how to search for the entered word in multiple files.
void search()
{
char str2[100];
char str[100];
cout<<"write some text to search:";
gets(str);
ifstream i;
i.open("stud.txt");
while(!i.eof())
{
i>>str2;
if(stricmp(str,str2)==0)
cout<<"found !";
else
cout<<"not found !";
}
getch();
}
|
|
|
|
|
Edit your post and add what (the code) you have tried.
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment
"Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst
"I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
|
|
|
|
|
Thanks For Your help in the previous question bro but it didn't worked. I already put the comparison into the while loop as you said but it's still searching for the last word. I am stuck at this point bro i don't know what to do. I also have to move to other parts of the program and complete it but i am stuck at this major point.
|
|
|
|
|
How about having a boolean variable, something like..
bool FoundIt = false;
.
.
.
while(!i.eof())
{
i>>str2;
if(stricmp(str,str2)==0)
{
FoundIt = true;
break;
}
}
if (FoundIt)
cout<<"found ! \n";
else
cout<<"not found ! \n";
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment
"Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst
"I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
modified 4-Dec-18 13:57pm.
|
|
|
|
|
I suspect that the problem is that you are using i>>str2; where str2 is defined as a character array. If you add a print command after that line you can see exactly what is returned by the >> operator. You should use a string type to get each word. Alternatively use ordinary C library functions to read each line and tokenise into words.
|
|
|
|
|
Thanks for taking time to reply to me bro.
Now, I would if i could what you told me but the problem is that i HAVE to make this project in Turbo C++ only and i know that this is ancient and i will go to hell for using it but plz try to help me with this project with the turbo Compiler
|
|
|
|
|
It makes little difference which compiler you use. You still need to list out the strings you are reading from the file to see whether they match with the one you have typed in.
|
|
|
|
|
You need to do the same thing for each file. This means breaking up your function into multiple functions. Hint: the new function would start at ifstream.
|
|
|
|
|
|
Think about the difference of using cout inside the loop and after the loop.
|
|
|
|
|
Hack Baba wrote: Plz also tell me how to search for the entered word in multiple files. Take your code from the ifstream declaration down and move to a separate function. Create a loop that iterates each filename you wish to process, calling the aforementioned function with each filename.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
Hi
I have CBS_SIMPLE CBS_OWNERDRAWVARIABLE ComboBox that I populate via DrawItem using DrawText
everything works fine in debug mode and for that matter in release mode while under the Visual Studio Debugger
However When I run code in Release not under the debugger the list box entries appear for a instant and then disappear
Any Suggestion how to go about debugging would be appreciated
|
|
|
|