|
I am not a lawyer and have no qualifications to interpret software licences. With that being said I believe the technique used by Joachim Bauch could potentially be challenged in court as creating a derivative work if it was used with a GPL DLL.
As far as adding the DLL as a resource and writing it to disk at first execution... it could be stated that the resulting PE executable image contains the GPL'd DLL and is thus a combined work. All of this is open to interpretation and "Derivitive Work[^]" has not been fully defined in the world courts.
If the original poster wants to static link to a GPL library he should probably contact the authors and inquire if other licences are available.
Best Wishes,
-David Delaune
|
|
|
|
|
No license problem at all.
Problem is getting it into my dll or so it can be found in the folder where my dll is stored.
RON C
Ronald E Chambers
|
|
|
|
|
Static linking is fine if product not for sale.
RON C
Ronald E Chambers
|
|
|
|
|
I started with a dll and a def file originally and tried lib.exe to make a lib file which it did but the dll code was not included.
I did this:
In order to link to these .dll files from Visual C++, you need to
create .lib "import libraries" for them, and can do so with the "lib"
command that comes with VC++. In particular, run:
lib /machine:i386 /def:libfftw3-3.def
lib /machine:i386 /def:libfftw3f-3.def
lib /machine:i386 /def:libfftw3l-3.def
libfftw3f-3.lib is a small file about 200k whereas the dll is 2mb so I didn't get a useful lib.
Is there something else I need to do? I know zilch about windows coding and VC2005 usage other than the c and c++ code I've done with projects from others. Original file I received libfftw3.lib was a double version and when I asked for float they sent dll and def and stated they didn't have lib for float.
Thanks so much for your patience and help.
RON C
Ronald E Chambers
|
|
|
|
|
Can I use loadLib to install it at run time but from the chosen folder? If so how do routines known of it's presence after loadLib? I assume the loadLib call must be in same module as the calls made to it??
Tgabjs,
RON C
Ronald E Chambers
|
|
|
|
|
Good morning:
I m trying to finish a program for school but im still missing several parts, im still working on it, but can someone please help me im stuck as on now on how to continue.
this is what the program must do:
a program must compute and display the charges for a patients hospital stay. first the program should ask if the patient was admitted as an in patient or an out patient. If the patient was as an in-patient the following data should be entered:
the number of days spent in the hospital
the daily rate
charges for hospital services (lab tests, etc.)
hospital medication charges
If the patient was an out patient the following data should be entered:
charges for hospital services (lab tests, etc.)
hosppital medication charges
the program should use two overloaded functions to calculate the total charges. one of the functions should accept arguments for the in patient data, while the other function accepts arguments for out patient data. Both functions should return the total charges.
Input validation: do not accept negative numbers for any information.
And this is what I have to far:
#include <iostream>
#include <iomanip>
using namespace std;
double patientCharges(int, double, double, double);
double patientCharges(double, double);
int main()
{
char patientType;
int days;
double roomRate,
medication,
services,
totalCharges;
cout << "This program will compute patient hospital charges.\n";
cout << "Enter I for in-patient or O for out-patient: ";
cin >> patientType;
cout << fixed << showpoint << setprecision(2) << endl << endl;
cout << "******************************\n";
if (patientType == 'I')
cout << "Room charges $" << setw(8) << days*roomRate << endl;
if (services > 0.0)
cout << "Lab & Services $" << setw(8) << services << endl;
if (medication > 0.0)
cout << "Medication $" << setw(8) << medication << endl;
cout << "Total charges $" << setw(8) << totalCharges << endl;
cout << "******************************\n";
return 0;
}
double patientCharges(int days, double rate, double med, double serv)
{
}
double patientCharges(double med, double serv)
{
}
|
|
|
|
|
What is your doubt about?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
It looks as though you need a class hierarchy something like:
class Patient
{
virtual double patientCharges( void );
};
class InPatient : public Patient
{
double patientCharges( void );
};
class OutPatient : public Patient
{
double patientCharges( void );
};
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|
|
Hello everyone,
Any macro used to represent computer name max length (just host name max length itself, not full-qualified with domain suffix, for example, I just want host name "somehost" in example.com domain, but not "somehost.example.com")?
http://msdn.microsoft.com/en-us/library/ms724301(VS.85).aspx
MAX_COMPUTERNAME_LENGTH is too small and just 15 characters.
thanks in avdance,
George
|
|
|
|
|
Just read the documentation carefully.
lpnSize [in, out] - On input, specifies the size of the buffer, in TCHARs. On output, receives the number of TCHARs copied to the destination buffer, not including the terminating null character. If the buffer is too small, the function fails and GetLastError returns ERROR_MORE_DATA. This parameter receives the size of the buffer required, including the terminating null character. If lpBuffer is NULL, this parameter must be zero.
If the provided buffer is not enough the GetComputerNameEx() fails with GetLastError() as ERROR_MORE_DATA. In that case, lpnSize holds the size of required buffer. Allocate the required buffer and call the function once again.
Well, like you, it took time for me to realize that MSDN is not just a documentation which have a short description abut the function names and parameters. It contains a lot of information about the behavior of functions. What really needed is patience to read them. Hope those lines changed something in you. Good Luck!
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Hi Jijo,
I am confused. My question is whether there is a macro which represents the max machine name length. Any comments?
If there is not such a built-in macro, I am not sure whether use 255? 1024 or something else is better?
regards,
George
|
|
|
|
|
George_George wrote: If there is not such a built-in macro, I am not sure whether use 255? 1024 or something else is better?
You don't need to worry about the max buffer. Just provide any initial buffer size you like. For instance 255 or 1024. If the provided buffer is not enough for api, it will return error together with required buffer size. I think the api is designed in such a way for a strong reason - may be due to limitations in fixing a max name length.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Thanks Jijo,
My concern is just I want to define a safe length so that there is no machine name longer than my defined length.
And there is no such built-in macro to represent max length?
regards,
George
|
|
|
|
|
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Thanks CPallini!
My question is whether there is a macro which represents the max machine name length -- I need such macro to define buffer length to retrieve machine name using this API. Any comments?
If there is not such a built-in macro, I am not sure whether use 255? 1024 or something else is better?
regards,
George
|
|
|
|
|
George_George wrote: Any macro used to represent computer name max length
I don't know if there is a #define available for this DNS limit. But RFC-2181 Section 11. - Name syntax
[^] states that the maximum length of the entire DNS record is 255 bytes/octets with each section limited to 64 bytes including the separator which would be 63 usable characters. You should be safe declaring a buffer 64 characters which would include the NULL terminator.
George_George wrote: MAX_COMPUTERNAME_LENGTH is too small and just 15 characters.
Thats because its the NetBios name limit, a Microsoft invention which has nothing to do with the DNS hostname.
One last note.. if you want to support international domain names[^] you should declare your buffer as wchar_t. The same maximum length restrictions apply.
Best Wishes,
-David Delaune
|
|
|
|
|
Thanks for your advice, David!
Let us looking forward to finding whether someone here has good knowledge whether there is such a built-in macro?
regards,
George
|
|
|
|
|
Found them in the Platform SDK file:
#include <Windns.h>
You will find:
#define DNS_MAX_NAME_LENGTH (255)
#define DNS_MAX_LABEL_LENGTH (63)
#define DNS_MAX_NAME_BUFFER_LENGTH (256)
#define DNS_MAX_LABEL_BUFFER_LENGTH (64)
Best Wishes,
-David Delaune
|
|
|
|
|
Cool, David!
I think I should use 64.
regards,
George
|
|
|
|
|
Hi George,
the answer is no; there is no macro/constant giving max length.
However there is a Win32 function that gives you the max length, it is called GetComputerNameEx ; just give it a buffer=NULL and a size variable whose value is set to zero. Upon return, read that very same size value, then allocate a sufficiently large buffer, and call GetComputerNameEx again.
BTW: this is a common pattern in Win32: first ask for size, then allocate, then ask for data using the same function.
|
|
|
|
|
Thanks Luc,
I am just surprised there is no such macro defined on Windows as built-in macro.
regards,
George
|
|
|
|
|
Some parameters just aren't constant, e.g. they depend on installation choices, available hardware, etc. In these cases you need to actually run some code to determine maximum sizes. Not sure why it would be dynamic in this case, but that is the author's decision after all.
|
|
|
|
|
|
OK.
does it match the return value when size zero was given?
|
|
|
|
|