National Instruments 320685D-01 ユーザーズマニュアル

ページ / 211
Chapter 4
Windows 3.1 Compiler/Linker Issues
LabWindows/CVI Programmer Reference Manual
4-22
©
 National Instruments Corporation
/Au
 option. You can either not use this option by setting it to None, or insert 
__loadds
 
in front of every function you export from the DLL.
You can make the compiler export a function by inserting 
__export
 between the return 
type and the function name, or by adding the function name to the exports section of the 
.def
 file.
If you add the function name to the exports section of the .
def
 file, remember to convert 
the name to all caps if you use the 
PASCAL
 calling convention, or pre-append an 
underscore if you use the 
CDECL
 calling convention.
Byte align structure members by choosing 1 Byte for the Options»Project»Compiler» 
Code Generation»Struct Member Byte Alignment
.
Creating 16-bit DLLs with Borland C++
Consider the following issues or project options when you create a DLL with 
Borland C++ 4.x:
Every function you call from outside the DLL must be 
far
, exported, and must load the 
data segment into the DS register. The function must load the DS register if you want to 
use any non-local variables in a function.
Use the large or huge memory model. The savings you gain by using smaller memory 
models is not worth having to use the 
far
 keyword throughout your code. This project 
option is in 16-bit Compiler»Memory Model»Mixed Model Override.
You can make the compiler load the data segment into the DS register by setting the 
project option 16-bit Compiler»Memory Model»Assume SS Equals DS to Never, or 
by inserting 
_loadds
 in front of every function you export from the DLL.
You can make the compiler export a function by inserting 
_export
 between the return 
type and the function name, adding the function name to the exports section of the 
.def
 
file, or setting the option 16-bit Compiler»Entry/Exit Code»Windows DLL, all 
functions exportable
.
If you add the function name to the exports section of the 
.def
 file, remember to convert 
the name to all caps if you use the 
PASCAL
 calling convention, or pre-append an 
underscore if you use the 
CDECL
 calling convention. Also, set the Generate Underscores 
option in Compiler»Compiler Output.
Turn off the Allocate Enums as Ints option in Compiler»Code Generation.
Set the Data Alignment options to Byte in 16-bit Compiler»Processor.
Turn off the Case Sensitive Link and Case Sensitive Exports and Imports options in the 
Linker»General.
Do not use the Linker Goodies options in Linker»16-bit Linker.
00ProRef.book : 06chap04.fm  Page 22  Monday, March 9, 1998  3:23 PM