Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Port CVF project into IVF, errors with DFOR.lib

Chandler__Gavin
Beginner
1,028 Views

Hi all,

I recently started working on a project that was build roughly 15 years ago. It uses a Visual C++, and visual fortran compiled in CVF. Currently, there are two projects in one solution. The C++ code is the main project that is dependent on the fortran code in a static library. I am on Windows 10, using Visual studio 2013 professional, and using Intel Visual Fortran 2017. 

The issue is that there are references to DFOR.lib in the project properties for the C++ project in the linker command line (/defaultlib:"dfor.lib"), but it gives the error dfor.lib cannot be opened and when removed, there are a series of unresolved external symbols. 

Error   6   error LNK2001: unresolved external symbol "public: class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > __thiscall petMove::toString(void)" (?toString@petMove@@QAE?AV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@XZ) C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureView.obj    Power Network Capture
Error   23  error LNK2019: unresolved external symbol "protected: __thiscall CZoomView::CZoomView(void)" (??0CZoomView@@IAE@XZ) referenced in function "protected: __thiscall CPowerNetworkCaptureView::CPowerNetworkCaptureView(void)" (??0CPowerNetworkCaptureView@@IAE@XZ)   C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureView.obj    Power Network Capture
Error   24  error LNK2019: unresolved external symbol "protected: virtual __thiscall CZoomView::~CZoomView(void)" (??1CZoomView@@MAE@XZ) referenced in function "public: virtual __thiscall CPowerNetworkCaptureView::~CPowerNetworkCaptureView(void)" (??1CPowerNetworkCaptureView@@UAE@XZ)    C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureView.obj    Power Network Capture
Error   7   error LNK2019: unresolved external symbol "public: __thiscall CDialogCurrentPhasor::CDialogCurrentPhasor(class CWnd *)" (??0CDialogCurrentPhasor@@QAE@PAVCWnd@@@Z) referenced in function "public: void __thiscall CCurrentPhasor::SEDialogHandler(void)" (?SEDialogHandler@CCurrentPhasor@@QAEXXZ) C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureDoc.obj Power Network Capture
Error   5   error LNK2019: unresolved external symbol "public: class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > __thiscall petMove::toString(void)" (?toString@petMove@@QAE?AV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@XZ) referenced in function "public: int __thiscall CPowerNetworkCaptureDoc::PushMove(class petMove *)" (?PushMove@CPowerNetworkCaptureDoc@@QAEHPAVpetMove@@@Z)  C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureDoc.obj Power Network Capture
Error   22  error LNK2019: unresolved external symbol "public: unsigned int __thiscall petMove::getPartType(void)" (?getPartType@petMove@@QAEIXZ) referenced in function "protected: void __thiscall CPowerNetworkCaptureView::OnChar(unsigned int,unsigned int,unsigned int)" (?OnChar@CPowerNetworkCaptureView@@IAEXIII@Z)    C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureView.obj    Power Network Capture
Error   14  error LNK2019: unresolved external symbol "public: virtual __thiscall CDialogRunAnalysisFromFilePF::~CDialogRunAnalysisFromFilePF(void)" (??1CDialogRunAnalysisFromFilePF@@UAE@XZ) referenced in function "protected: void __thiscall CPowerNetworkCaptureDoc::OnAnalysisRunFromFilePF(void)" (?OnAnalysisRunFromFilePF@CPowerNetworkCaptureDoc@@IAEXXZ)    C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureDoc.obj Power Network Capture
Error   3   error LNK2019: unresolved external symbol _HtmlHelpW@16 referenced in function "protected: void __thiscall CMainFrame::OnHtmlHelp(void)" (?OnHtmlHelp@CMainFrame@@IAEXXZ)   C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\MainFrm.obj  Power Network Capture

I have tried to rebuild the solution. The fortran library compiles without any errors but the C++ project does not. I am new to working with Visual Studio and linking libraries so I do not know if this is an issue with a missing library that has replaced DFOR.lib or if the C++ project should generate the links automatically. I also noticed that for my fortran static library Configuration Properties< Fortran < External Procedures < Calling Convention was set to CVF (/iface:cvf). I tried setting this to default but I saw no immediate results. 

Also I have tried to rebuild the solution from the source code but I am inexperienced with that and the solution is quite large. One issue I am having is that the fortran files are now compiling with errors when they did not previously. 

Error	2	 error #6633: The type of the actual argument differs from the type of the dummy argument.   [WS]	C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Ali Abur Code\pet_neda\fortranfiles\optimpl\IPENUM.f	295	

How can I replace all of the references and ties to Compaq Visual Fortran? Or how can I solve these unresolved external symbol errors? Are there any similar libraries I can use to resolve some of the externals?

Thank you for the help in advance,

Gavin 

0 Kudos
1 Solution
IanH
Honored Contributor II
1,028 Views

I couldn't see an implied or explicit way that the Fortran project was being linked into the C++ project.  There are a few ways this could be done (and perhaps I've missed what is being used), but as an example I would expect the name of the Fortran static library to be listed in the properties for the C++ project under Linker > Input > Additional Dependencies, and the output directory that holds that static library to be listed under Link > General > Additional Library Directories.

But this doesn't explain your C++ errors.

The C++ code that you show looks like a definition.  If the procedure that code defines is referenced elsewhere in source code that is compiled in the C++ project, then that would explain the unresolved references.  Is that code in a cpp file or a header file?  If it is in a cpp file, I would expect it to be explicitly listed in the C++ source files.

Other observations, which don't necessarily require you to do anything:

- The Debug configuration for the C++ project has hard references to ifort 17 folders, while the Release configuration has references to version 13. 

- The fortran library has "link library dependencies" selected.  The only dependencies of that library are Fortran runtime libraries - which are better left out. 

For giggles, I created a simple Fortran static library project that had a single procedure.  I then created a MFC executable with default wizard settings in VS2015, and referenced the Fortran procedure via the OnAppAbout method in the MFC code.  Changes I needed to make to get things to link correctly were all in the C++ project properties, and were:

- reference the Fortran static library under Linker > Input > Additional Dependencies, as described above.

- add the output directory for the Fortran static library under Link > General > Additional Library Directories, as described above.

- add the library directory for the Fortran compiler, also under Link > General > Additional Library Directories (in your case this is as you have set - $(IFORT_COMPILER17)\compiler\lib\ia32).

- Right click on the C++ project and via Build Dependencies > Project Dependencies, select the Fortran static library as a dependency of the C++ project (I think with mixed Fortran/C++ projects these days all this does is ensure that the projects are built in the right order, but in other situations it can help by automatically populating library and include file search paths).

Your list of unresolved references in your stack overflow post is slightly different, and list HTMLHelp.  That library is still provided with the Windows SDK, but may need to be explicitly listed in the library dependencies for the C++ project (can't remember details - it has been too long).

 

View solution in original post

0 Kudos
13 Replies
IanH
Honored Contributor II
1,028 Views

It is a bit ambiguous at times about which project within your Visual Studio solution you are referring to.

The errors indicate that the linker doesn't know where to find C++ code that should have been compiled previously.  A Fortran project isn't likely to influence this and I doubt whether DFOR.lib is referenced or not is relevant for those list errors.

Do you have the source that has the definitions of the C++ functions listed - petMove::toString and the like?  Is that source being compiled within the same project that is giving the errors?  Is it compiled in a different project?

In terms of properties required for your Fortran code - do you know how the Fortran and C++ interface?  Can you provide examples of a C++ function prototype that corresponds to a Fortran procedure?  Are you passing strings between the languages? 

If you recompile all Fortran source code, and don't bring any pre-compiled Fortran code in via static libraries, then I'd expect that the references to DFOR.lib should not be required.

You have posted this question in multiple places, with about the same amount of information each time.  Project configurations can be complex, which can mean that lots of information is required.  Consider posting the actual project configuration files (vfproj, vcxproj, etc).  At some point it just becomes easier to give people trying to help you access to your whole solution.

0 Kudos
Chandler__Gavin
Beginner
1,028 Views

Hello,

Sorry for the lack of information, I will try to be better with it but it has mainly been due to the fact that I am very new to this and am unsure what is necessary to understand the issue. In the future, if you continue to help me, please feel free to ask for any more files you need but I am not the creator or owner of these files so I can not just begin sending the whole project to everyone.

Bellow I have attached the configuration files. Also I think you are correct saying the error does not have much to do with dfor.lib or the sort but I am still unfamiliar with linking. Also do you know a way to figure out if I have the source code that defines the C++ functions listed, when I search for them using agent ransack, I find one code contains, 

CString petMove::toString(){
CString discription;
discription.Format ("petMove - moveType: %d  partType: %d \n", 
moveType, partType);
return discription;
}

So would that be the code that defines it? Also it seems that this files is in the project directory (file), but not in the Visual Studio solution explorer window, and am not sure if it is being compiled at all.

Also, as far as I am aware, the fortran creates the majority of the objects for the project, and the both the Visual C++ project as well as the Fortran static library are in one solution where the VC++ is dependent on the fortran. As for how they interface, I am not entirely sure but I can search the files or send a few over.

If answering this question will require more information and files from me, just say so. In the meantime, thank you so much for the help and sorry for the multiple post, I realized I had not posted in the correct forum and realized my previous questions were not very well formed (neither is this one but I thought I may had gotten closer to informed question). Also I made a few changes to what project or solution I was talking about in the original question.

0 Kudos
IanH
Honored Contributor II
1,029 Views

I couldn't see an implied or explicit way that the Fortran project was being linked into the C++ project.  There are a few ways this could be done (and perhaps I've missed what is being used), but as an example I would expect the name of the Fortran static library to be listed in the properties for the C++ project under Linker > Input > Additional Dependencies, and the output directory that holds that static library to be listed under Link > General > Additional Library Directories.

But this doesn't explain your C++ errors.

The C++ code that you show looks like a definition.  If the procedure that code defines is referenced elsewhere in source code that is compiled in the C++ project, then that would explain the unresolved references.  Is that code in a cpp file or a header file?  If it is in a cpp file, I would expect it to be explicitly listed in the C++ source files.

Other observations, which don't necessarily require you to do anything:

- The Debug configuration for the C++ project has hard references to ifort 17 folders, while the Release configuration has references to version 13. 

- The fortran library has "link library dependencies" selected.  The only dependencies of that library are Fortran runtime libraries - which are better left out. 

For giggles, I created a simple Fortran static library project that had a single procedure.  I then created a MFC executable with default wizard settings in VS2015, and referenced the Fortran procedure via the OnAppAbout method in the MFC code.  Changes I needed to make to get things to link correctly were all in the C++ project properties, and were:

- reference the Fortran static library under Linker > Input > Additional Dependencies, as described above.

- add the output directory for the Fortran static library under Link > General > Additional Library Directories, as described above.

- add the library directory for the Fortran compiler, also under Link > General > Additional Library Directories (in your case this is as you have set - $(IFORT_COMPILER17)\compiler\lib\ia32).

- Right click on the C++ project and via Build Dependencies > Project Dependencies, select the Fortran static library as a dependency of the C++ project (I think with mixed Fortran/C++ projects these days all this does is ensure that the projects are built in the right order, but in other situations it can help by automatically populating library and include file search paths).

Your list of unresolved references in your stack overflow post is slightly different, and list HTMLHelp.  That library is still provided with the Windows SDK, but may need to be explicitly listed in the library dependencies for the C++ project (can't remember details - it has been too long).

 

0 Kudos
Chandler__Gavin
Beginner
1,028 Views

Hello, 

Thanks for the reply. For the code that I showed it was in CStack.cpp (attached below), but I also have a header file for it as well. Do you think that this issue could be resolved with adding the file to the source codes. It seems that many of the files (C++ source code and header files) were not included in the project when I originally opened it. It was a project sent to me, through dropbox, and when I opened only a few of the source code appeared in the project despite having many others in the project folder. Should I try adding all these source and header files to the project?

As for the references to ifort, I think that it defaulted to 13 and at one point I saw the setting and changed it to 17 since I am using IVF 2017. Should I undo this or change the other reference?

Thanks for going out of your way "for giggles", it has helped a lot. I set the input< Additional Dependencies to .\Debug\Power Network Capture_lib_.lib, but should I put .\Debug for the output directory? With these settings, a few of the unresolved externals have been resolved but many still remain (I deleted the ones that seem to be very similar to not spam this thread but I can send them again if you would like.

Error	461	error LNK1120: 15 unresolved externals	C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\Debug\Power Network Capture.exe	Power Network Capture
Error	448	error LNK2001: unresolved external symbol "public: class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > > __thiscall petMove::toString(void)" (?toString@petMove@@QAE?AV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@XZ)	C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureView.obj	Power Network Capture
Error	458	error LNK2019: unresolved external symbol "protected: __thiscall CZoomView::CZoomView(void)" (??0CZoomView@@IAE@XZ) referenced in function "protected: __thiscall CPowerNetworkCaptureView::CPowerNetworkCaptureView(void)" (??0CPowerNetworkCaptureView@@IAE@XZ)	C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureView.obj	Power Network Capture
Error	459	error LNK2019: unresolved external symbol "protected: virtual __thiscall CZoomView::~CZoomView(void)" (??1CZoomView@@MAE@XZ) referenced in function "public: virtual __thiscall CPowerNetworkCaptureView::~CPowerNetworkCaptureView(void)" (??1CPowerNetworkCaptureView@@UAE@XZ)	C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureView.obj	Power Network Capture
Error	449	error LNK2019: unresolved external symbol "public: __thiscall CDialogCurrentPhasor::CDialogCurrentPhasor(class CWnd *)" (??0CDialogCurrentPhasor@@QAE@PAVCWnd@@@Z) referenced in function "public: void __thiscall CCurrentPhasor::SEDialogHandler(void)" (?SEDialogHandler@CCurrentPhasor@@QAEXXZ)	C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureDoc.obj	Power Network Capture
Error	447	error LNK2019: unresolved external symbol "public: class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > > __thiscall petMove::toString(void)" (?toString@petMove@@QAE?AV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@XZ) referenced in function "public: int __thiscall CPowerNetworkCaptureDoc::PushMove(class petMove *)" (?PushMove@CPowerNetworkCaptureDoc@@QAEHPAVpetMove@@@Z)	C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureDoc.obj	Power Network Capture
Error	457	error LNK2019: unresolved external symbol "public: unsigned int __thiscall petMove::getPartType(void)" (?getPartType@petMove@@QAEIXZ) referenced in function "protected: void __thiscall CPowerNetworkCaptureView::OnChar(unsigned int,unsigned int,unsigned int)" (?OnChar@CPowerNetworkCaptureView@@IAEXIII@Z)	C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureView.obj	Power Network Capture
Error	456	error LNK2019: unresolved external symbol "public: virtual __thiscall CDialogRunAnalysisFromFilePF::~CDialogRunAnalysisFromFilePF(void)" (??1CDialogRunAnalysisFromFilePF@@UAE@XZ) referenced in function "protected: void __thiscall CPowerNetworkCaptureDoc::OnAnalysisRunFromFilePF(void)" (?OnAnalysisRunFromFilePF@CPowerNetworkCaptureDoc@@IAEXXZ)	C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureDoc.obj	Power Network Capture
Error	445	error LNK2019: unresolved external symbol _HtmlHelpW@16 referenced in function "protected: void __thiscall CMainFrame::OnHtmlHelp(void)" (?OnHtmlHelp@CMainFrame@@IAEXXZ)	C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\MainFrm.obj	Power Network Capture
Error	460	error LNK2019: unresolved external symbol _SPARSE_PIV referenced in function _SOLVE_DQ	C:\Users\Gavin\Desktop\College stuff\1st year (Fresher)\Pet_Gavin\pet_neda\Power Network Capture_lib_.lib(TSsolve.obj)	Power Network Capture

Also I have already done the project dependency before. And for the HTMLHelp, someone has also suggested a solution to that but I have not checked it out much since I have not had the time to work on it yet partially because I am new as you probably have noticed and heard, so it will take me a while to understand what he wanted me to do (also I only work twice a week (only have enough money for 15 hours a week and I am already working overtime) but every day I try to get back to people who respond to me).

Finally, I used to have /defaultlib:"dfor.lib" in the Linker command line, should I just keep it deleted?

Also more recent update, when I added the directory to the HTMLhelp.lib,  C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\x86\Htmlhelp.Lib, to input< Additional Dependencies, one of the unresolved externals went away (which was the error 445... _HtmlHelp...)

Thanks again for getting back to me, I hope I am not being too annoying as I am such a newb.

0 Kudos
andrew_4619
Honored Contributor II
1,028 Views

"dfor.lib"  is a CVF runtime lib so if none of your application is built with CVF it should not be needed.

 

0 Kudos
Chandler__Gavin
Beginner
1,028 Views

Thanks andrew_4619, I would assume that changing to default is correct then.

Also on another note, I have a different solution (I will now call solution 2 to not confuse with my original) that I made from my source and header files. I rebuilt the project and have been fixing errors and such along the way and currently the extension builds with 2 successes and 0 failures. The only thing is that is gives the error "Failed to create blank document" when opening and when I stepped through the code it appeared when calling Winmain.cpp. Something is causing it to build incorrectly but it does not seem that the errors are coming up. 

For now the issue I was asking about seems to have been resolved for solution 2, but if the errors regarding unresolved externals reappear or you have any idea why the errors will not resolve in solution 1, I will greatly appreciate the help.

0 Kudos
TimP
Honored Contributor III
1,028 Views

I don't understand what you mean by "changing to default."  /iface:cvf isn't a default, even with the 32-bit ifort.

0 Kudos
Chandler__Gavin
Beginner
1,028 Views

Sorry, I meant in Configuration Properties< Fortran < External Procedures < Calling Convention I changed the setting from CVF (/iface:cvf) to Default

0 Kudos
FortranFan
Honored Contributor II
1,028 Views

Chandler, Gavin wrote:

.. For now the issue I was asking about seems to have been resolved for solution 2, but if the errors regarding unresolved externals reappear or you have any idea why the errors will not resolve in solution 1, I will greatly appreciate the help.

@Chandler, Gavin:

I see you have been posting about your issues on several forums for a while but you may not yet have completely satisfactory resolution(s) to the problems you face.

I'll suggest the following: set up a simple prototype/model of your Visual Studio solution involving a C++ MFC application and Fortran static library projects with the same settings as your actual solution 1 (or solution 2) but where the C++ and Fortran code is trivial and thus can be made public, like a Hello World! example.  If your settings are the same, generally you should get similar errors like unresolved externals or "Failed to create a blank document".  If you then post a zip with all the files, readers can analyze and suggest fixes to help resolve the issues.

Separately, can you confirm you're familiar with how to develop, debug, and extend MFC applications using C++ and how to consume external libraries such as static C library project in Visual Studio with such an MFC C++ Windows executable project?  Note from a high-level (and grossly simplified) way of looking at such Visual Studio projects, a static library project in Fortran is no different than a static library C project.  So if you can get an MFC C++ Windows executable project working well with a static C library project and note for which lots and lots of information is available on the Internet, you can easily apply the learning with your Intel Fortran static library project.

P.S.> Are you a student?  And if yes, is this effort of yours toward a class project/assignment?

 

0 Kudos
Chandler__Gavin
Beginner
1,028 Views

Hello FortranFan, sorry again for posting on other threads and such. I was trying to post different questions just they kept converging or some people would suggest for me to post on intel for example on this issue.

Also I am a student but this is not for a class. I am actually working undergraduate research with a professor who wrote a program long ago and other people have worked on since. However, along the way something happened and now it doesn't build correctly (likely due to compatibility issues and such). Since he has extra money for undergraduates, he hired me in hopes of me fixing the issue that no one else really knows anything about.

As such, I am actually not very familiar with develop, debug, and extend MFC applications using C++, or visual studio, which is why I have been asking so many questions and have been having such difficulties solving problems that have been very minor. I have worked with C++ before and have been improving my understanding as I go but I came into this with almost no experience on libraries and such and the professor was hoping I would just be independent and ask on forums to get help on the issue. So basically, most I have been researching as much as I can on other forums to solve these issues and then asking when it seems other solutions are not working. 

Also for the project, what kind of code did you want me to put in the fortran project? I do not mind sharing a script just not the entire project.

 

0 Kudos
FortranFan
Honored Contributor II
1,028 Views

Chandler, Gavin wrote:

.. As such, I am actually not very familiar with develop, debug, and extend MFC applications using C++, or visual studio ..

In that case, I'll suggest you go through this tutorial in detail:

https://www.tutorialspoint.com/mfc/index.htm

And review thread such as this one at social MSDN: https://social.msdn.microsoft.com/Forums/vstudio/en-US/0555c543-291e-40fb-b6d7-313e82f24fe0/mixing-c-and-c-mfc?forum=vcgeneral

Also see this: https://en.wikipedia.org/wiki/%22Hello,_World!%22_program

What I had in mind was that you can setup a simple MFC application project along the lines of what is shown at the tutorialspoint site above.  You can then add a  C language static library project that has a single function which returns something, say a string Hello World!, or a sum of two input numbers.  Get this to work first.  You can then swap out the C project with an equivalent Fortran static library project,

Once you have such a project setup, you can then replace the C++ code in the MFC project with your professor's code and the same on the Fortran side.

0 Kudos
Chandler__Gavin
Beginner
1,028 Views

Thanks, I will review those tutorials and hopefully gain the needed experience to send you a test project. I tried earlier but I had some problem come up and could not reproduce the error with just the hello world script. Also when you said replace the scripts, did you mean just the main ones for sending you a test file or did you mean try to recreate the project for myself (rather than use the final product to send)?

0 Kudos
Chandler__Gavin
Beginner
1,028 Views

Thanks for the help everyone, I went through all the tutorials and it seems there were issues with the resource files and the linking to the fortran library. After going through the tutorial, I tried a few things and the program worked. I am now working on the with the physical program but thanks a ton for all the help!

-Gavin Chandler

0 Kudos
Reply