Made a C++ dll with MS VC6 and trying to call the dll from Excel VBA.
This is the code in the .cpp file:
#include "stdafx.h"
#include <string>
#include <math.h>
using namespace std;
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_c all,
LPVOID lpReserved
)
{
return TRUE;
}
//to compare case in-sensitive
//----------------------------
int CompareIgnoreCa se(const string& s, const string& s2)
{
string::const_i terator p = s.begin(),
p2 = s2.begin();
while(p!= s.end() && p2!= s2.end()){
if(tolower(*p)! = tolower(*p2))re turn tolower(*p)< tolower(*p2) ? -1: 1;
++p; ++p2;
}
return s2.size()- s.size();
}
//round number n to d decimal points
//----------------------------------
double fround(double n, unsigned d)
{return floor(n * pow(10, d) + 0.5) / pow(10, d);}
double _stdcall Framingham2 (long Age,
long SysBP,
double TotChol,
double HDL,
string Sex,
string Diabetes,
string LVH,
string Smoke,
long Years = 10)
{
int x;
int btSex;
int btDiabetes;
int btLVH;
int btSmoke;
string sFEMALE = "FEMALE";
string sYES = "YES";
double dMu;
double dS;
double dU;
double dProb;
//exclude out of range input
//--------------------------
if ((Age < 35) ||
(Age > 75) ||
(SysBP < 50) ||
(SysBP > 300) ||
(TotChol < 1) ||
(TotChol > 30) ||
(HDL < 0.2) ||
(HDL > 10) ||
(Years > 10))
return 0;
x = CompareIgnoreCa se(Sex,sFEMALE) ;
if (x == 0)
btSex = 1;
else
btSex = 0;
x = CompareIgnoreCa se(Diabetes,sYE S);
if (x == 0)
btDiabetes = 1;
else
btDiabetes = 0;
x = CompareIgnoreCa se(LVH,sYES);
if (x == 0)
btLVH = 1;
else
btLVH = 0;
x = CompareIgnoreCa se(Smoke,sYES);
if (x == 0)
btSmoke = 1;
else
btSmoke = 0;
dMu = 15.5305 +
28.4441 * btSex +
-1.4792 * log(Age) +
-14.4588 * log(Age) * btSex +
1.8515 * pow(log(Age), 2) * btSex +
-0.9119 * log(SysBP) +
-0.2767 * btSmoke +
-0.7181 * log(TotChol / HDL) +
-0.1759 * btDiabetes +
-0.1999 * btDiabetes * btSex +
-0.5865 * btLVH;
dS = exp(0.9145 + (-0.2784 * dMu));
dU = (log(Years) - dMu) / dS;
dProb = 1 - exp(-exp(dU));
return fround(dProb * 100,1);
}
I have included a .def file with this:
EXPORTS
Framingham2
It compiles (win32 release) nicely without any errors or warnings.
The function also shows nicely when I run DEPENDS.EXE.
I have checked the function in a C++ console app and that runs fine giving
the right
results. This is without input arguments though and with the values
hard-coded.
In Excel VBA I do this:
Option Explicit
Private Declare Function Framingham2 _
Lib "C:\Program Files\Microsoft Visual
Studio\MyProjec ts\Framingham\R elease\Framingh am.dll" _
(ByVal Age As Long, _
ByVal SysBP As Long, _
ByVal TotChol As Double, _
ByVal HDL As Double, _
ByVal Sex As String, _
ByVal Diabetes As String, _
ByVal LVH As String, _
ByVal Smoke As String, _
ByVal Years As Long) As Double
Sub test()
MsgBox Framingham2(50, 140, 5.6, 1.6, "male", "no", "no", "no", 10)
End Sub
This compiles fine, but when I run Sub test() I get Run-time error 49: Badd
DLL calling convention.
I have tried altering the datatypes both in the VBA declaration and in the
..cpp file but no success.
I am completely new to this, so I am sure I have done something stupid
somewhere, but I just can't find it.
Thanks for any advice.
RBS 6 4624
RB Smissaert <ba***********@ blueyonder.co.u k> wrote: Made a C++ dll with MS VC6 and trying to call the dll from Excel VBA.
You are off-topic here, as you do not have a problem with C++, but
the your particular environment. Try comp.os.ms-windows.program mer.win32
instead.
I will answer anyway, see below for the off-topic-ness ;)
double _stdcall Framingham2 (long Age, long SysBP, double TotChol, double HDL, string Sex, string Diabetes, string LVH, string Smoke, long Years = 10)
Private Declare Function Framingham2 _ Lib "C:\Program Files\Microsoft Visual Studio\MyProjec ts\Framingham\R elease\Framingh am.dll" _ (ByVal Age As Long, _ ByVal SysBP As Long, _ ByVal TotChol As Double, _ ByVal HDL As Double, _ ByVal Sex As String, _ ByVal Diabetes As String, _ ByVal LVH As String, _ ByVal Smoke As String, _ ByVal Years As Long) As Double
This compiles fine, but when I run Sub test() I get Run-time error 49: Badd DLL calling convention. I have tried altering the datatypes both in the VBA declaration and in the .cpp file but no success.
A 'string' in C++ is a C++ data type. This data-type has most
probably different representation than the VB string type, though they
effectivly hold the same information. Google for "passing C-strings to
VB" or similar. I know there was a KB article on MSDN showing how to
pass strings from VB to C Dll and back. If I remember correctly, you
have to change your function in the Dll to accept a 'char const*'
instead of 'string'. But you better look that up again.
Other than that, _stdcall should probably be __stdcall (two
underscores) .. not sure if that makes a difference tho.
hth
--
jb
(reply address in rot13, unscramble first)
Thanks for the quick reply.
Not sure I agree I am off topic here though.
I also had an inkling that doing:
#include <string>
and declaring as string in the .cpp was a bit too simple.
Will just find an example of a C++ dll that accepts
string arguments from VB and see how that is done.
RBS
"Jakob Bieling" <ar************ ****@rot13.com> wrote in message
news:e1******** *****@news.t-online.com... RB Smissaert <ba***********@ blueyonder.co.u k> wrote: Made a C++ dll with MS VC6 and trying to call the dll from Excel VBA.
You are off-topic here, as you do not have a problem with C++, but the your particular environment. Try comp.os.ms-windows.program mer.win32 instead.
I will answer anyway, see below for the off-topic-ness ;)
double _stdcall Framingham2 (long Age, long SysBP, double TotChol, double HDL, string Sex, string Diabetes, string LVH, string Smoke, long Years = 10)
Private Declare Function Framingham2 _ Lib "C:\Program Files\Microsoft Visual Studio\MyProjec ts\Framingham\R elease\Framingh am.dll" _ (ByVal Age As Long, _ ByVal SysBP As Long, _ ByVal TotChol As Double, _ ByVal HDL As Double, _ ByVal Sex As String, _ ByVal Diabetes As String, _ ByVal LVH As String, _ ByVal Smoke As String, _ ByVal Years As Long) As Double
This compiles fine, but when I run Sub test() I get Run-time error 49: Badd DLL calling convention. I have tried altering the datatypes both in the VBA declaration and in the .cpp file but no success.
A 'string' in C++ is a C++ data type. This data-type has most probably different representation than the VB string type, though they effectivly hold the same information. Google for "passing C-strings to VB" or similar. I know there was a KB article on MSDN showing how to pass strings from VB to C Dll and back. If I remember correctly, you have to change your function in the Dll to accept a 'char const*' instead of 'string'. But you better look that up again.
Other than that, _stdcall should probably be __stdcall (two underscores) .. not sure if that makes a difference tho.
hth -- jb
(reply address in rot13, unscramble first)
RB Smissaert <ba***********@ blueyonder.co.u k> wrote: Not sure I agree I am off topic here though.
Trust me, you are.
Neither Dlls, nor specific calling conventions are part of the
Standard C++ language. In other words, your code will not compile and
run on any other box unless it is running Windows. So your code is
platform specific, and thus leaving the realms of what is defined by
Standard C++, the topic of this group.
I also had an inkling that doing: #include <string> and declaring as string in the .cpp was a bit too simple.
Will just find an example of a C++ dll that accepts string arguments from VB and see how that is done.
I checked my own code. Change your function like so
double __stdcall Framingham2 (long Age,
long SysBP,
double TotChol,
double HDL,
char const* Sex,
char const* Diabetes,
char const* LVH,
char const* Smoke,
long Years = 10)
And it should work. I know this can be tricky, so maybe there are
other things I have overlooked. In that case, please direct further
questions to comp.os.ms-windows.program mer.win32, as you will also get
better help for this problem there.
regards
--
jb
(reply address in rot13, unscramble first)
For somebody who thinks I am in the wrong group you have done a good
job in helping as you were absolutely right. Changing from string to
char const* made it all work nicely. Will just have to figure out now what
char const* exactlyt means/does and that will be it for now.
Also will have to test if this kind of dll actually is faster than running
this from VBA.
Ideally I think this should go in a .xll add-in but that would definitely be
off-topic.
Will post to the group you suggested next time if I have something similar.
Thanks again.
RBS
"Jakob Bieling" <ar************ ****@rot13.com> wrote in message
news:e1******** *****@news.t-online.com... RB Smissaert <ba***********@ blueyonder.co.u k> wrote:
Not sure I agree I am off topic here though.
Trust me, you are.
Neither Dlls, nor specific calling conventions are part of the Standard C++ language. In other words, your code will not compile and run on any other box unless it is running Windows. So your code is platform specific, and thus leaving the realms of what is defined by Standard C++, the topic of this group.
I also had an inkling that doing: #include <string> and declaring as string in the .cpp was a bit too simple.
Will just find an example of a C++ dll that accepts string arguments from VB and see how that is done.
I checked my own code. Change your function like so
double __stdcall Framingham2 (long Age, long SysBP, double TotChol, double HDL, char const* Sex, char const* Diabetes, char const* LVH, char const* Smoke, long Years = 10)
And it should work. I know this can be tricky, so maybe there are other things I have overlooked. In that case, please direct further questions to comp.os.ms-windows.program mer.win32, as you will also get better help for this problem there.
regards -- jb
(reply address in rot13, unscramble first)
Just to say that putting this function in a regular C++ dll doesn't speed it
up that much. I got it about 20% faster.
Will now see if I can put this in an .xll, which I think might
be faster as it directly works with the Excel C API.
RBS
"RB Smissaert" <ba***********@ blueyonder.co.u k> wrote in message
news:oH******** *************@f e3.news.blueyon der.co.uk... Made a C++ dll with MS VC6 and trying to call the dll from Excel VBA.
This is the code in the .cpp file:
#include "stdafx.h" #include <string> #include <math.h>
using namespace std;
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_c all, LPVOID lpReserved ) { return TRUE; }
//to compare case in-sensitive //---------------------------- int CompareIgnoreCa se(const string& s, const string& s2) { string::const_i terator p = s.begin(), p2 = s2.begin();
while(p!= s.end() && p2!= s2.end()){ if(tolower(*p)! = tolower(*p2))re turn tolower(*p)< tolower(*p2) ? -1: 1; ++p; ++p2; } return s2.size()- s.size(); }
//round number n to d decimal points //---------------------------------- double fround(double n, unsigned d) {return floor(n * pow(10, d) + 0.5) / pow(10, d);}
double _stdcall Framingham2 (long Age, long SysBP, double TotChol, double HDL, string Sex, string Diabetes, string LVH, string Smoke, long Years = 10)
{ int x; int btSex; int btDiabetes; int btLVH; int btSmoke; string sFEMALE = "FEMALE"; string sYES = "YES"; double dMu; double dS; double dU; double dProb;
//exclude out of range input //-------------------------- if ((Age < 35) || (Age > 75) || (SysBP < 50) || (SysBP > 300) || (TotChol < 1) || (TotChol > 30) || (HDL < 0.2) || (HDL > 10) || (Years > 10)) return 0;
x = CompareIgnoreCa se(Sex,sFEMALE) ; if (x == 0) btSex = 1; else btSex = 0;
x = CompareIgnoreCa se(Diabetes,sYE S); if (x == 0) btDiabetes = 1; else btDiabetes = 0;
x = CompareIgnoreCa se(LVH,sYES); if (x == 0) btLVH = 1; else btLVH = 0;
x = CompareIgnoreCa se(Smoke,sYES); if (x == 0) btSmoke = 1; else btSmoke = 0;
dMu = 15.5305 + 28.4441 * btSex + -1.4792 * log(Age) + -14.4588 * log(Age) * btSex + 1.8515 * pow(log(Age), 2) * btSex + -0.9119 * log(SysBP) + -0.2767 * btSmoke + -0.7181 * log(TotChol / HDL) + -0.1759 * btDiabetes + -0.1999 * btDiabetes * btSex + -0.5865 * btLVH;
dS = exp(0.9145 + (-0.2784 * dMu)); dU = (log(Years) - dMu) / dS; dProb = 1 - exp(-exp(dU));
return fround(dProb * 100,1); }
I have included a .def file with this:
EXPORTS Framingham2
It compiles (win32 release) nicely without any errors or warnings. The function also shows nicely when I run DEPENDS.EXE. I have checked the function in a C++ console app and that runs fine giving the right results. This is without input arguments though and with the values hard-coded. In Excel VBA I do this:
Option Explicit Private Declare Function Framingham2 _ Lib "C:\Program Files\Microsoft Visual Studio\MyProjec ts\Framingham\R elease\Framingh am.dll" _ (ByVal Age As Long, _ ByVal SysBP As Long, _ ByVal TotChol As Double, _ ByVal HDL As Double, _ ByVal Sex As String, _ ByVal Diabetes As String, _ ByVal LVH As String, _ ByVal Smoke As String, _ ByVal Years As Long) As Double
Sub test()
MsgBox Framingham2(50, 140, 5.6, 1.6, "male", "no", "no", "no", 10)
End Sub
This compiles fine, but when I run Sub test() I get Run-time error 49: Badd DLL calling convention. I have tried altering the datatypes both in the VBA declaration and in the .cpp file but no success. I am completely new to this, so I am sure I have done something stupid somewhere, but I just can't find it. Thanks for any advice.
RBS
OK, doing this in an .xll add-in is indeed much faster.
It timed it 30 times faster in a moderately complex
math function. This is compared with the VBA function.
Compared with the C++ dll it will be about 25 times faster.
RBS
"RB Smissaert" <ba***********@ blueyonder.co.u k> wrote in message
news:Zc******** ************@fe 3.news.blueyond er.co.uk... Just to say that putting this function in a regular C++ dll doesn't speed it up that much. I got it about 20% faster. Will now see if I can put this in an .xll, which I think might be faster as it directly works with the Excel C API.
RBS
"RB Smissaert" <ba***********@ blueyonder.co.u k> wrote in message news:oH******** *************@f e3.news.blueyon der.co.uk... Made a C++ dll with MS VC6 and trying to call the dll from Excel VBA.
This is the code in the .cpp file:
#include "stdafx.h" #include <string> #include <math.h>
using namespace std;
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_c all, LPVOID lpReserved ) { return TRUE; }
//to compare case in-sensitive //---------------------------- int CompareIgnoreCa se(const string& s, const string& s2) { string::const_i terator p = s.begin(), p2 = s2.begin();
while(p!= s.end() && p2!= s2.end()){ if(tolower(*p)! = tolower(*p2))re turn tolower(*p)< tolower(*p2) ? -1: 1; ++p; ++p2; } return s2.size()- s.size(); }
//round number n to d decimal points //---------------------------------- double fround(double n, unsigned d) {return floor(n * pow(10, d) + 0.5) / pow(10, d);}
double _stdcall Framingham2 (long Age, long SysBP, double TotChol, double HDL, string Sex, string Diabetes, string LVH, string Smoke, long Years = 10)
{ int x; int btSex; int btDiabetes; int btLVH; int btSmoke; string sFEMALE = "FEMALE"; string sYES = "YES"; double dMu; double dS; double dU; double dProb;
//exclude out of range input //-------------------------- if ((Age < 35) || (Age > 75) || (SysBP < 50) || (SysBP > 300) || (TotChol < 1) || (TotChol > 30) || (HDL < 0.2) || (HDL > 10) || (Years > 10)) return 0;
x = CompareIgnoreCa se(Sex,sFEMALE) ; if (x == 0) btSex = 1; else btSex = 0;
x = CompareIgnoreCa se(Diabetes,sYE S); if (x == 0) btDiabetes = 1; else btDiabetes = 0;
x = CompareIgnoreCa se(LVH,sYES); if (x == 0) btLVH = 1; else btLVH = 0;
x = CompareIgnoreCa se(Smoke,sYES); if (x == 0) btSmoke = 1; else btSmoke = 0;
dMu = 15.5305 + 28.4441 * btSex + -1.4792 * log(Age) + -14.4588 * log(Age) * btSex + 1.8515 * pow(log(Age), 2) * btSex + -0.9119 * log(SysBP) + -0.2767 * btSmoke + -0.7181 * log(TotChol / HDL) + -0.1759 * btDiabetes + -0.1999 * btDiabetes * btSex + -0.5865 * btLVH;
dS = exp(0.9145 + (-0.2784 * dMu)); dU = (log(Years) - dMu) / dS; dProb = 1 - exp(-exp(dU));
return fround(dProb * 100,1); }
I have included a .def file with this:
EXPORTS Framingham2
It compiles (win32 release) nicely without any errors or warnings. The function also shows nicely when I run DEPENDS.EXE. I have checked the function in a C++ console app and that runs fine giving the right results. This is without input arguments though and with the values hard-coded. In Excel VBA I do this:
Option Explicit Private Declare Function Framingham2 _ Lib "C:\Program Files\Microsoft Visual Studio\MyProjec ts\Framingham\R elease\Framingh am.dll" _ (ByVal Age As Long, _ ByVal SysBP As Long, _ ByVal TotChol As Double, _ ByVal HDL As Double, _ ByVal Sex As String, _ ByVal Diabetes As String, _ ByVal LVH As String, _ ByVal Smoke As String, _ ByVal Years As Long) As Double
Sub test()
MsgBox Framingham2(50, 140, 5.6, 1.6, "male", "no", "no", "no", 10)
End Sub
This compiles fine, but when I run Sub test() I get Run-time error 49: Badd DLL calling convention. I have tried altering the datatypes both in the VBA declaration and in the .cpp file but no success. I am completely new to this, so I am sure I have done something stupid somewhere, but I just can't find it. Thanks for any advice.
RBS This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: Jeremy R. Harner |
last post by:
I'm trying to use a DLL, but when I try to run it from Visual Basic by
going to Run > Start I get a 'Bad DLL Calling Convention' error when I
try to access a function inside the DLL. If I compile the program to
an executable and run it everything works fine....that is I don't get
the 'Bad DLL Calling Convention' and the function works as it's
supposed to. Does anybody have any idea what is wrong. Thanks This
is the calling convention...
|
by: Asapi |
last post by:
1. Are linkage convention and calling convention referring to the same
thing?
2. Does calling convention differ between languages C and C++?
3. How does calling convention differ between static and non-static class
member function?
4. Could it be possible to specify different calling convention for each
"global" or each class member function? Even in a single file scope?
|
by: Muthu |
last post by:
I've read calling conventions to be the order(reverse or forward) in
which the parameters are being read & understood by compilers.
For ex. the following function.
int Add(int p1, int p2, int p3);
The parameters here can be read either in the forward order from p1
till p3 or reverse order from p3 till p1.
Can anyone explain what is the advantage/disadvantage of either of
|
by: Leftie |
last post by:
Folks,
I'm trying to call an unmanaged function from VB.NET and
keep getting "Object reference not set to an instance of
an object" error.
The code that i wrote can be found at:
http://www.nomorepasting.com/paste.php?pasteID=5973
The dll (if some kind soul has the time to compile and run
the code) can be found at:
|
by: Geler |
last post by:
A theoretical question: Sorry if its a beginner question.
Here is a quote from the MSDN explaning the C/C++ calling convention.. It
demonstrates that the calling function is responsible to clean the stack
pointer and it does it by the command "add esp,8" after returning from
the called function.
My questions:
1. Is the stack pointer common in a certain thread(or process)?
2. How does the called function get the parameters, is it by...
| |
by: John Friedland |
last post by:
My problem: I need to call (from C code) an arbitrary C library
function, but I don't know until runtime what the function name is,
how many parameters are required, and what the parameters are. I can
use dlopen/whatever to convert the function name into a pointer to
that function, but actually calling it, with the right number of
parameters, isn't easy.
As far as I can see, there are only two solutions:
1) This one is portable. If...
|
by: briankirkpatrick |
last post by:
Forgive me if my post seems a little amateurish...
I'm requesting assistance from some of you smart folks out there to
get the managed calls write that meet the specification in the esa.h
for Esa_Init. When I make a call, VS2005 reports
"AccessViolationException" and refers to the 4th parameter
(EsaT_State_Handle). I don't know how to define nor pass this
reference correctly to the legacy DLL. What am I doing wrong? Thanks
in...
|
by: sulekhasweety |
last post by:
Hi,
the following is the definition for calling convention ,which I have
seen in a text book, can anyone give a more detailed explanation in
terms of ANSI - C
"the requirements that a programming system places on how a procedure
is called and how data is passed between a calling program and
procedures are called calling conventions"
|
by: Jaco Naude |
last post by:
Hi there,
This is my first post over here and I hope someone can give me some
guidance.
I'm trying to embed Python into a Visual C++ 2008 application and I'm
getting linker problems. I've compiled a DLL of the Python source code
using the pythoncode VC++ project in the PCbuild folder of the source
download and this works 100% without any warnings etc. I've done this
in Debug and Release mode without any problems.
|
by: Ole Nielsby |
last post by:
VC has a __cdecl specifier which allows functions and methods to
be called with varying parameter count.
(I understand this is the default for functions in general but in VC,
instances use another convention unless they have an ellipsis
argument.)
I can force GCC and other compilers to use such a convention by
declaring all methods with an ellipsis, but I'd rather not clutter my
method definitions with these.
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it.
Here is my compilation command:
g++-12 -std=c++20 -Wnarrowing bit_field.cpp
Here is the code in...
| |
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth.
The Art of Business Website Design
Your website is...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own....
Now, this would greatly impact the work of software developers. The idea...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules.
He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms.
Adolph will...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one.
At the time of converting from word file to html my equations which are in the word document file was convert into image.
Globals.ThisAddIn.Application.ActiveDocument.Select();...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols.
I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
| |
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
|
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
| |