Click here to Skip to main content
15,885,278 members
Everything / DLL

DLL

DLL

Great Reads

by CMalcheski
A full-scale all-assembly .DLL module for the situations that warrant it can offer a tremendous power and speed boost over using inline ASM or intrinsics alone.
by Avelino Ferreira
The easiest way to implement the ToolStripControlHost and ToolStripDropDown classes, in a UserControl, in order to display a Container/Control beyond the limits of its Parent Container and Parent Form, with very few lines of code. Let's uncomplicate ...
by pasztorpisti
An advice to make your DLL interface more attractive and easier-to-maintain even in cross-platform projects
by Irfan alam
A library for creating a voice and text conferencing application

Latest Articles

by Bruno van Dooren
An introduction to exporting functions from DLLs
by Bruno van Dooren
In this article, I explain how to create win32 style DLLs and what the various significant intricacies are.
by Philippe Cayouette, Sebastien Gibeau
Solution using smart pointers' custom deleters
by vblover Programmer
Create a resource-only DLL

All Articles

Sort by Score

DLL 

26 Jun 2019 by CMalcheski
A full-scale all-assembly .DLL module for the situations that warrant it can offer a tremendous power and speed boost over using inline ASM or intrinsics alone.
3 Aug 2016 by Avelino Ferreira
The easiest way to implement the ToolStripControlHost and ToolStripDropDown classes, in a UserControl, in order to display a Container/Control beyond the limits of its Parent Container and Parent Form, with very few lines of code. Let's uncomplicate ...
19 Feb 2016 by pasztorpisti
An advice to make your DLL interface more attractive and easier-to-maintain even in cross-platform projects
14 Feb 2010 by Irfan alam
A library for creating a voice and text conferencing application
2 May 2019 by Uzi Granot
The PDF417 barcode decoder class library allows you to extract PDF417 barcode information from image files. The library is written in C# for the .NET framework. The two demo projects allows you to explore the library and read PDF417 barcodes.
7 Nov 2018 by Apriorit Inc, gamapat
Take a look at how to intercept HTTP traffic in order to inject custom code into Windows HTML markup
25 Jan 2024 by Bruno van Dooren
An introduction to exporting functions from DLLs
31 Mar 2011 by Olivier Levrey
From C# code:- If you want to pass a string as input parameter, use string type.- If you want to pass a string and modify its content, then use StringBuilder type.public class LibTest{ //and don't forget to tell how big is your buffer [DllImport("LibTest")] private...
11 Nov 2011 by lewax00
Unless I'm misunderstanding something, you can just go to properties for the project, Settings tab, and click "This project does not contain a default settings file. Click here to create one.".
11 May 2012 by OriginalGriff
HRESULT is a Int32 value - so use that in your DLLImport declaration, and check the actual int returned against the range of valid values. There is a list of common ones here: http://msdn.microsoft.com/en-us/library/windows/desktop/aa378137(v=vs.85).aspx[^]and a more extensive list here:...
11 Jul 2012 by Mehdi Gholam
Usually such functionality is done with a windows service, create a service for your DLL and call your methods on a Timer.Read the following :http://msdn.microsoft.com/en-us/library/aa984464%28v=vs.71%29.aspx[^]Simple Windows Service Sample[^]
13 Nov 2012 by Lucas Martins de Souza
Hello there folks! :)After non-stopping researches I just made an simple example work out. And now I think I can expand that to my hole project!The way to go is by using OPEN WATCOM FORTRAN ( whitch is free, dowload it here: http://www.openwatcom.org/index.php/Main_Page[^] and I used...
20 Jan 2011 by Rock Bottom
Hi guys,I came across an interesting problem at work where we're trying to merge 2 standalone .exes into one. The smaller one has already been enclosed in a DLL, however, back when it was implemented, it was written as one large DLL.What we'd like to do at this point would be to separate...
25 Feb 2011 by Nish Nishant
There are two ways to do this:Use C++/CLI to access the C# code. This would mean your native DLL would become mixed mode, which you may not desire. You could split them up though, have a C++/CLI DLL that wraps the C# code and exposes it natively, and your Win32 DLL can access it via the...
11 Jan 2024 by Bruno van Dooren
In this article, I explain how to create win32 style DLLs and what the various significant intricacies are.
12 Nov 2010 by Electron Shepherd
What name are you using for the call to CreateFileMapping? Have you used the "Global\" prefix to force it into the global namespace?See also http://msdn.microsoft.com/en-us/library/aa382954.aspx[^] for a discussion about the SeCreateGlobalPrivilege that you will need.
26 May 2011 by barneyman
if it's got a type library embedded in it, it's fairly easy// get ATL's client templates#include // import the typelibrary direct from the dll#import "" raw_interfaces_only no_namespaceThat will create a .tlh file in your output directory...
8 Jul 2011 by Tarun.K.S
In addition to Marcus's answer, do have a look at these answers too: http://www.codeproject.com/Answers/218803/what-is-the-difference-between-exe-and-dll-files[^]
14 Feb 2012 by Sergey Alexandrovich Kryukov
For exceptions, there are no boundaries between assemblies. An exception operated on a stack, and each stack belongs to a thread.Please see other answers. Here is a rule of thumb: in most cases, don't catch exceptions in libraries. You need to catch exceptions on a very top stack frame...
11 May 2012 by Sergey Alexandrovich Kryukov
The question has nothing to do with HRESULT. You would need to use it the same ways as in COM. The only problem is using unmanaged DLL in your .NET assembly.There are two ways to do it.First one is P/Invoke. If you need learn P/Invoke, please...
11 Jul 2012 by Sergey Alexandrovich Kryukov
Please see my comment to the question. The problem is that you don't specify what do you mean by "run a DLL", so your problem cannot be solved until you understand what you really need.For better understanding, you should understand what the executable modules are and what is the role of...
29 Aug 2012 by BobJanova
Reference that DLL in another project.Use the namespace (using demoDll).Extend the class (public class ImplementingClass : Class1) and override the method as normalpublic class ImplementingClass : Class1 { public override int ADDNumbers(int a, int b, int c){ ... }}It looks like...
5 Jun 2013 by Thomas Daniels
Hi,Yes, it's possible.Use ILMerge:http://research.microsoft.com/en-us/people/mbarnett/ILMerge.aspx[^]Merging .NET assemblies using ILMerge[^]You can download it from here:http://www.microsoft.com/en-us/download/details.aspx?id=17630[^]
5 Jun 2013 by CHill60
Instead of "moving" an exe around create a deployment package that contains all the dependent stuff you need (this might include config files and other resources for example).Here's a starting point on deployment topics[^]Another one to watch out for is on the properties for references...
18 Aug 2013 by CPallini
You create global variables in a DLL like you do in standard applications, there is nothing special with it.If you need to export such variables you may use (on Windows platform) the dllexport attribute (see dllexport, dllimport at MSDN[^] (or better, you may export accessor functions).
26 Apr 2014 by User 59241
All of what SA has said is correct. That's why we have this:http://msdn.microsoft.com/en-us/library/ms682586%28VS.85%29.aspx[^]I think the best solution is put the dll where it can be found. However to achieve what you wish look at this. You can do it via...
27 Jun 2014 by Sergey Alexandrovich Kryukov
C# DLL is not "unmanaged", it is managed. In CLI world, "DLL" or "EXE" is not that important; they are just assembly modules, the central concept is "assembly", which are made out of modules, usually only one (don't mix up modules and referenced assemblies).With C#, the problem is pretty...
1 Jun 2016 by Patrice T
Your question tells us that you are learning C backward. It is all wrong.To learn C, start by reading the Kernihan & Ritchie book, it is mandatory.It is like when you learn to drive, you are required to learn all road signs before putting your hands on the wheel, no matter what.This book...
30 Jun 2016 by Jochen Arndt
This has been asked and answered before:How to use c++ classes and functions in c#?[^]How do I DllExport a C++ Class for use in a C# Application - Stack Overflow[^]Some useful links:How to Marshal a C++ Class[^]Using Unmanaged C++ Libraries (DLLs) in .NET Applications[^]HowTo:...
25 May 2017 by CPallini
Quote: [MarshalAs(UnmanagedType.U8)]ulong verb, [MarshalAs(UnmanagedType.U8)]ulong verb2 That should be, instead [MarshalAs(UnmanagedType.U4)] uint verb, [MarshalAs(UnmanagedType.U4)] uint verb2 or, simply: uint verb, uint verb2
20 Jan 2011 by #realJSOP
Like Nish said, it should be a simple matter to move the code into static LIB files, and just link them in. If you're careful with your includes, you shouldn't even have too many issues.Hopefully, you're starting with a fresh project and not modifying the one that already works. :)
20 Jan 2011 by Sergey Alexandrovich Kryukov
The approach is to draw a layered diagram based on available dependencies -- a manual work, but it will direct you very well in structuring future development (for this project, but for new ones as well). This served me well in many big projects.With .NET I developed a simple utility:...
25 Jan 2011 by Espen Harlinn
This is kind of a refinement of SAKryukov’s answer, he’s, in my view, definitely heading in the right direction. Depending on the size of the project - DoxyGen[^] together with Graphwiz[^] can help you get a detailed overview of the project with a graphical representation of the inheritance...
31 Jan 2011 by ring_0
Write your logic to check the parent process in your exe.if the parent process name is cmd.exe then you can put your code to write a message on console else show message box.
14 Feb 2011 by Mark Briscombe
This may or may not be an easy question and I have been out of programming in C++ for a while, but I want to be able to "wake up" a console Win32 Console Application each time another application has updated variables in shared memory.I have already created a shared memory dll (in c++) and I...
27 Feb 2011 by Sergey Alexandrovich Kryukov
A project has the option "Output type" (in Visual Studio, this is in the first tab of the properties, "Application"). The types are "Windows Application", "Console Application" and "Class Library". DLL is a "Class Library". You can change output type any time.Note that the difference between...
13 Mar 2011 by Espen Harlinn
Check out that you are using the right/expected calling convention:int __stdcall IsBadgeReaderPresent(char *strComPort = "COM1")I would have expected that EXPORT would be defined to take care of that, but with this kind of error I'd check that one out first.RegardsEspen Harlinn
23 Mar 2011 by santosh dhanawade
Hi All, I spend Last 45 days to deal with dll i got lots of advantages of dll for my big project management.As Well as in every 2 Hours I got new milestone problem.--------------------------------------------------------------------------------Problem :-I used dll function with...
23 Sep 2011 by E.F. Nijboer
This is a classic producer/consumer problem that needs synchronization to make it work properly. It's just like in real life, it is impossible to write both at the same time using just one pencil. You need to make rules about sharing or make one person responsible for writing stuff...
15 Jan 2012 by «_Superman_»
CString uses either the ASCII character set or the UNICODE character set depending on whether the UNICODE pre-processor macro is defined.Visual Studio defines UNICODE by default.std::string on the other hand always uses the ASCII character set.You can explicitly use CStringA to use the...
8 Feb 2012 by Sergey Alexandrovich Kryukov
First thing you have to think about is dependency layers. You should design then the way each layer serves a platform for the above layers. If should be in sync with your build process; all code in a layer should depend on one of more layers below it, never on anything above.You should...
7 Feb 2012 by Sergey Alexandrovich Kryukov
This is a separate topic: but please consider adding some plug-in architecture.Please see some motivation in my comments in our discussion over my previous answer on this page. Introductory notes: plug-ins should not create any dependencies. More exactly, no assembly should depend on...
10 Feb 2012 by Christian Graus
I guess this is a legacy project ? I have no idea what registry keys are used ( I've never used VB6 and never will ), but, if a registry key is all you need, can you just add that key in your app and make it work that way ?
20 Feb 2012 by _iris_
Thank you for the guess :) - looks like it's something vb6-specific, for the target computer to understand the exe it has to be transferred per a complete setup, visual studio for vb6 supplies tools for that. now it works at the target computer.i'm not sure yet if other developers can use...
19 Jun 2012 by Sergey Alexandrovich Kryukov
In addition to the correct answer by Tim:For deeper understanding of the problem, you should first understand that compilation is a process resulting in the loss of information. For example, if you change the text formatting of your source code, if won't effect the output executable, so the...
24 Jul 2012 by Jochen Arndt
Your code fails because there are two versions of the function: An ANSI version and an Unicode version. According to the Unicode setting, you must pass 'GetVolumePathNamesForVolumeNameA' or 'GetVolumePathNamesForVolumeNameW' to GetProcAddress().
15 Aug 2012 by Sergey Alexandrovich Kryukov
The idea is very simple. You almost got it, should just think about it.The kind of late binding you use is of the level of plug-in (your "registered" DLL) and the plug-in architecture. You need to look at it as at the whole architecture, and it all will be clear to you. The think is: the...
23 Aug 2012 by Purushotham Agaraharam
Dynamic changing of version number using SolutionInfo.cs through out the application.
14 Oct 2012 by Marius Bancila
It is possible if you use COM. You should make your C# class exposed to COM and then you can use it in C++. Here is an example inspired by a question here:namespace ManagedDLL{ // Interface declaration. [Guid("32529FAE-6137-4c62-9945-DE4198FA9D1B")] ...
12 Mar 2013 by nv3
Although I have never tried it, I'd say that there is a good chance that the little trick with "..." will work.But you are depriving yourself from all the type checking that the compiler can do for you. Let's say, the function you are calling has a signature of (int, int) and instead you...
18 Mar 2013 by Menon Santosh
if you are calling the managed code then Assembly SampleAssembly = Assembly.LoadFrom(filename);Type myType = SampleAssembly.GetTypes()[0];MethodInfo Method = myType.GetMethod("myVoid");object myInstance = Activator.CreateInstance(myType);Method.Invoke(myInstance, null); and if...
27 Sep 2013 by Sergey Alexandrovich Kryukov
Formally, it sounds like a nonsense. There is no such concept as "call to a DLL". And, if you have a call to a DLL which is not loaded, this is not, by definition, a call.However, something close to it may have real practical sense. For simplicity, let's assume that this is not just a DLL,...
30 Jan 2014 by Sergey Alexandrovich Kryukov
Please see this wonderful open-source project, ILSpy:http://ilspy.net/[^],http://en.wikipedia.org/wiki/.NET_Reflector[^].It decompiles .NET assemblies with amazing quality. As this is source code, if you want to do it by yourself, you can study its code and learn how to do it.—SA
13 Mar 2014 by Sergey Alexandrovich Kryukov
Unfortunately, my understanding of you problem is incomplete. First of all, I cannot immediately see how is it related to your previous question about indirect reference of the assembly (which is the non-existing mechanism). By the way, your explanation of your project looks very interesting...
5 May 2015 by Sergey Alexandrovich Kryukov
"Append a DLL" is nothing but absurd. You can always load an assembly (assembly, not "DLL") using...
27 Jun 2015 by Pedram_Niloufari
C# .Gif viewer / Snipper control
1 Jun 2016 by CPallini
My two cents:Quote:First time posting here, but I'm having a little issue. I was given two old files in C. both of them are considered Dll but one of them is in .c and the other in .h. The .c has about 30 functions whereas the .h has 4 functions ( that are all defined in the .C). *( I do want...
23 Jan 2021 by Christian Graus
This cannot be. If you called the function, the inner function will be called. Why do you think it's not being called? I think you are mistaken
23 Jan 2021 by Shao Voon Wong
Your code looks correct. It is not the same as the code that has a problem. Make a sample project that reproduces the problem and put it on GitHub and I'll have a look. You have a problem with the returned value of char* from wok1()? Show the...
23 Jan 2021 by KarstenK
When the inner code isnt executed than you must search the error on the place in your code. Take a look at my article about calling C++ in C#.
9 May 2021 by Richard MacCutchan
I do not know where you found that code but the official documentation is different: The Invocation API[^]. Also why do you write: mbstowcs(t, "C:\\Program Files (x86)\\Java\\jdk-16.0.1\\jre\\bin\\server\\jvm.dll", 400); jvm_dll =...
8 Oct 2021 by CHill60
Assuming you are meaning that you only want your applications to be able to use this DLL and no-one else's then you could require a licence key to be part of every call into it. Starting point A simple software key useful to protect software...
21 Jun 2023 by CPallini
Yes. The DLL code is mapped in the process memory space, see, for instance: About Dynamic-Link Libraries - Win32 apps | Microsoft Learn[^].
19 Nov 2023 by Dave Kreskowiak
Typically, "BadImageFormatException" means you're trying to mix 32- and 64-bit code in the same process. You're either trying to use 64-bit .DLL's in your app that's running as 32-bit, or you're trying to use 32-bit .DLL's in a 64-bit app. You...
23 Jan 2010 by Christian Graus
You can use reflection to look at their code and see how they do it. I imagine they do it with some form of URL redirection, which runs the aspx inside their dll, and sends it in response to a page request for a page that is not physically there. I'm not sure why anyone would want to do this.
23 Feb 2010 by Eugen Podsypalnikov
Why should it be impossible ? :)class B;class A{...public: A(B* pB);...--When you will have to transport class instances by an interface -you could define a function like TakeData(IStream* pStream) :) The caller could create an IStream associated with...
17 May 2010 by Sauro Viti
Try have a look to this page and the related resources, from the MSDN library:http://msdn.microsoft.com/en-us/library/ms644990(VS.85).aspx[^]I think that what you need as first step is a low-level keyboard hook (see WH_KEYBOARD_LL) to process keys before that they are dispatched to the...
28 May 2010 by Anthony Mushrow
Which version of the DLL that your program is using depends on which build of the library your program actually linked to.You may either need to check your linker settings and make sure that in Release you are not linking with the debug lib or check your code for any #pragma comment(lib,...
2 Jun 2010 by Emilio Garavaglia
The new/delete operators are implemented as functions into the standard library. These function will -sooner or later- end up into a malloc and later HeapAlloc.If you link the standard library as a DLL, the "operator new(...)" function overload set is in MSVCxxx.DLL (as said in a previous...
4 Jul 2010 by Christian Graus
I would expect that you're breaking your license, as much as anything. If you use a third party tool, then expect to distribute it as is.
12 Nov 2010 by Electron Shepherd
The other thing I suspect you would need to do, if you wanted to use memory-mapped files, would be to call CreateFileMapping with a NULL DACL for the security attributes (not the same as passing NULL in as the parameter value).
24 Jan 2011 by Darki699
Another way to use the code above is to create dynamic "dynamic linking", to download dlls and embed them during runtime!How to do this:1. Add a project reference to a COM object, but DO NOT include the DLL in the executable folder2. Do not call any of the functions from the COM ref...
20 Jan 2011 by Nish Nishant
If you have enclosed the smaller one in a DLL, one quick and dirty way to merge it with the main executable is to convert the DLL project into a static lib project. Now your main exe can statically link to it, which means you will end up with just a single binary.I reckon there will be some...
19 Jan 2011 by Nish Nishant
See http://msdn.microsoft.com/en-us/library/aa375685(VS.85).aspx[^]Based on that 0x80880283 is CAPICOM_E_ENVELOP_RECIPIENT_NOT_FOUND. More details:The recipient cannot be found in the EnvelopedData object. Usually, this does not happen with an EnvelopedData object that was created...
29 Jan 2011 by Abhinav S
I got interested and did some looking around - I found a very cool blog that may provide the answer to your problems - http://nbaked.wordpress.com/2010/03/28/gac-alternative/[^].
2 Feb 2011 by Andrew Brock
1) If you are lucky.Get a copy of Dependency Walker[^] and check the function names.Functions are generally exported using the C convention, this only stores the function name, and without reverse engineering there is no way to get parameters and return type.If you are lucky, then the...
27 Feb 2011 by Manfred Rudolf Bihy
Either create a class library project or just reference the exe file from another project. You can use all the public stuff from an exe just as you would have used them from a DLL.Cheers!
27 Feb 2011 by Abhinav S
MSDN link here[^] (creating a Dll using the command line).
7 Mar 2011 by willifritz
Hi,you have to provide the size of the array.Try the following:public struct abc{ public int a; [System.Runtime.InteropServices.MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)] public int[] b;}
7 Mar 2011 by johannesnestler
Your marshalling is wrong. Marshal the b[] field of your struct with [System.Runtime.InteropServices.MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)] or use unsafe code public fixed int b[5]. Btw your example code is wrong (bcd, a2.b = new int[5], mystruct(10)). Please test before posting...
23 Mar 2011 by Richard MacCutchan
Try (i.e remove the addressof operators): Cstring tempstr,tempstr1; tempstr = "SANTOSH"; *First = tempstr; tempstr1 = "DHANAWADE"; *Second = tempstr1;Alternatively use references rather than pointers.[edit]Added Carlo's fixes.[/edit]
23 Mar 2011 by CPallini
*First = "SANTOSH";*Second = "DHANAWADE";
23 Mar 2011 by Olivier Levrey
Your question is not very clear.If I understood well, you have a function in your main application and you want to call that function from a dll. If I didn't understand then rephrase your question.If I am correct, the function from your main application is called a callback. You will...
31 Mar 2011 by Sergey Alexandrovich Kryukov
The problem looks trivial, but I would need some time to debug it. Right now, I see only one problem here: the type *char by default is marchalled as System.String. Seriosly! See standard marshalling.—SA
3 May 2011 by #realJSOP
If your interfaces/classes rely on the enums, and the ui relies on the interfaces/classes/enums, I'd put the enums into the same assembly as the interfaces/classes. This way, you can resuse the interfaces/classes and their enums in another app (if that is the aim).If you're not planning any...
3 May 2011 by Hemant__Sharma
@Naerling - ... It is not logic, it is not abstract and it is not UI...But it's an option/indicator for an object or operation. For example DialogBoxs' types should be added to the same assembly where DialogBox class are defined. Again when DialogBox result is returned it will be a...
31 May 2011 by Sergey Alexandrovich Kryukov
Did you see this Open Source product: http://sourceforge.net/projects/usbsnoop/[^]?—SA
4 Aug 2011 by walterhevedeich
Try Red Gate's .Net Reflector[^]. However, this is not free. If you want a free/open source tool, check this[^]
9 Sep 2011 by #realJSOP
Google reveals all.A skinned dialog in Python and MFC[^]
25 Sep 2011 by Sergey Alexandrovich Kryukov
It is bad of course and should be avoided but it is not extremely problematic. You server will work with new version of CMath and the client with the old CMath, without someMoreData. Everything else depends on what you do with this class on client and what on server. For example, it's possible...
13 Oct 2011 by Mehdi Gholam
Why don't you just deploy the two versions in different setups, obviously you will know which platform you will be running on so just package your files accordingly.
13 Oct 2011 by BobJanova
You can't do it statically, almost by definition (the choice you are making is a runtime one). The simple solution is to deploy one DLL, and make it the appropriate one for the platform, as Mehdi suggests. If for some reason you can't do that, the best approach is probably a plugin based one...
23 Oct 2011 by BillWoodruff
... edited to remove the possibly negative sense of my original response using the phrase "trick question" ...Even though I think the question posed here is a "tricky" question that has no clear solution ... at least not in .NET WinForms, I feel compelled to clarify my earlier comment with...
6 Apr 2012 by OriginalGriff
There is no one component that can convert "any format" to HTML.There are various components that can convert .DOC files, others for .XLS, others for .PDF and so on.Google is your friend here: work out what formats you want to convert, and search for them.
18 May 2012 by Member 8456258
Hello everyoneI have a project that transfers data back and forth to a third party software. The communication is made possible via a DLL. One of the functions in the DLL is to send a stream of data with a known length when the data is available (data is a frame). In order for my code to get...
18 May 2012 by Ed Nutting
Hi there,I think this will solve your issue. See the third code sample on this page:http://msdn.microsoft.com/en-us/library/chfa2zb8(v=vs.71).aspx[^]You need to do something like:unsafe{ OnNewFrame = new delOnNewFrame(OnNew_Frame);}Hope this helps,Ed
20 Jul 2012 by Christian Graus
To register a COM dll, you call regsvr32. There's no complex code or library required. ShellExecute is all you need.
5 Sep 2012 by prashant_khairnar
Hello ,To build the file MyFunctions.DLL, compile the two files Add.cs and Mult.cs using the following command line:csc /target:library /out:MyFunctions.DLL Add.cs Mult.csThe /target:library compiler option tells the compiler to output a DLL instead of an EXE file. The /out compiler...
15 Oct 2012 by manoranjan
No need to make it a web service. Using C++/CLI you can instantiate your C#'s class in your C++ program almost like C++ classes. You need to use gcnew (instead of new) to instantiate .NET classes.For details, see: http://en.wikipedia.org/wiki/C%2B%2B/CLI[^]
4 Nov 2012 by Andreas Gieriet
See http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License[^].The challenge: a customer must be enabled to replace your delivered LGLP based library by his own one. This is for example technically not fully given for languages that do inline code from the LGPL library (e.g. templates...