Почему это утверждение несостоятельно?
Похоже на очень простую задачу:
VS2017 15.9.13 (последняя версия на сегодня)
Моя основная программа, а затем DLL:
#include <windows.h> #include <stdio.h> #include <time.h> extern "C" int WINAPI wWinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow ) { time_t now = time ( 0 ); FILE *log = _wfopen ( L"test.dat", L"wt,ccs = UNICODE" ); if ( HMODULE hdll = LoadLibrary ( L"Dll1" ) ) { typedef int ( _cdecl *typeCreate )(int, FILE *); typeCreate Create = ( typeCreate ) GetProcAddress ( hdll, "MySub" ); if ( Create ) { fwprintf ( log, L"Test 2 at %s", _wctime ( &now ) ); fflush ( log ); int nn = ftell ( log ); int n = 21; nn = Create ( n, log ); } } fclose (f); return EXIT_SUCCESS; }
#include <stdio.h> extern "C" __declspec (dllexport) int MySub ( int n, FILE *f ) { int nn = 0; if ( f ) { nn = ftell ( f ); fwprintf ( f, L"Number %d\n", n ); fflush ( f ); nn = ftell ( f ); } return nn; }
Запуск этой программы после изменения и сброса некоторых параметров проекта завершается неудачей с:
Отладочное утверждение не удалось!
Program: C:\xxxxxx\Dll1\Debug\Project1.exe File: minkernel\crts\ucrt\src\appcrt\lowio\lseek.cpp Line: 103 Expression: _osfile(fh) & FOPEN For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts. (Press Retry to debug the application)
Что я уже пробовал:
Когда этот проект только что создан, он работает так, как и ожидалось. После внесения (и возврата) некоторых настроек проекта, таких как указание Windows 8.1 в качестве версии Windows SDK, программа продолжает терпеть неудачу в операторе ftell в DLL, независимо от того, что я пытаюсь сделать.
У меня есть полный проект, Доступный в виде zip-файла, но я не вижу способа загрузить этот файл.
Надеюсь на хорошее предложение,
Хенк Б